gpt4 book ai didi

php - MySQL 向 SET 元素添加值

转载 作者:行者123 更新时间:2023-11-29 06:17:43 26 4
gpt4 key购买 nike

我正在尝试借助 php 表单向我的数据库中插入一个新行。

CREATE TABLE person (
first_name VARCHAR(30) NOT NULL,
last_name VARCHAR(30) NOT NULL,
languages SET('english', 'greek', 'german', 'japanese', 'spanish', 'italian', 'french', 'wookie', 'klingon', 'other') NOT NULL,
pid INT UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY(pid)
);

首先,我有上面的 MySQL 表。

然后,使用下面的代码,我得到所有的字段值

<form class="sform" method="post">
<input type="text" name="first_name" value="" placeholder="First name" maxlength="30">
<input type="text" name="last_name" value="" placeholder="Last name" maxlength="30">
<select multiple="multiple" id="languages" name="languages[]">
<option value='english'>English</option>
<option value='greek'>Greek</option>
<option value='german'>German</option>
<option value='japanese'>Japanese</option>
<option value='spanish'>Spanish</option>
<option value='italian'>Italian</option>
<option value='french'>French</option>
<option value='wookie'>Wookie</option>
<option value='klingon'>Klingon</option>
<option value='other'>Other</option>
</select>
</form>

此时请注意,这是一个多选表单。(一个人可能会说不止一种语言)

然后,我使用 php 获取表中每个元素的值,但对于我最感兴趣的元素,我执行以下操作:

$qfirst_name     = $_POST['first_name'];
$qlast_name = $_POST['last_name'];
$qlanguages = "'" . implode("','", $_POST['languages']) . "'";

我在这里调用 implode 方法的原因是我得到一个字符串,格式如下:ex.'english','greek' 但是,那个不是 MySQL 接受 SET 初始化的方式,所以我将 single quotes 替换为这样:

$qlanguages = str_replace('\'', '', $qlanguages);

现在,$qlanguages 将是:ex.english,greek但这还不够接近,所以最后一步是在变量的开头和结尾都应用引号,如下所示:$qlanguages = '\''.$qlanguages.'\'';

最后,$qlanguages 以正确的形式 'english,greek' 插入到数据库中,代码如下:

$sql1 = "INSERT INTO person (first_name, last_name, languages) 
VALUES ('$qfirst_name', '$qlast_name', '$qlanguages')";

然后我连接到我的数据库,以便将条目添加到数据库中注意这里还有另一个文件建立了连接,我刚刚将它包含在我的 php 文件的顶部。

if ($dbconn->query($sql1)) {
echo "SUCCESS";
}
else {
echo "FAIL";
}

我已经尽可能地解释了我的步骤,我的问题是:为什么当我在查询中包含 SET 字段时,我无法插入新的 person 在数据库中。我错过了什么?

抱歉发了这么长的帖子。

最佳答案

你这样做了:

$qlanguages = "'english,greek'";
$sql1 = "INSERT INTO person (first_name, last_name, languages)
VALUES ('$qfirst_name', '$qlast_name', '$qlanguages')";

所以你得到了这个:

$sql1 = "INSERT INTO person (first_name, last_name, languages) 
VALUES ('qfirst_name', 'qlast_name', ''english,greek'')";

你可以看到“双”“单”引号代替了语言

关于php - MySQL 向 SET 元素添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34912084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com