我試圖插入一個新的行到我的數據庫的幫助下的一個PHP窗體。MySQL將值添加到SET元素
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>
注意在這一點上,這是一個多選的形式。(一個人可以說超過1種語言)
然後,使用php
我得到的數值爲表中的每個元素,但對於一個我最感興趣的我做到以下幾點:
$qfirst_name = $_POST['first_name'];
$qlast_name = $_POST['last_name'];
$qlanguages = "'" . implode("','", $_POST['languages']) . "'";
我這裏所說的implode
方法的原因是,所以我得到一個字符串返回以下形式:ex.'english','greek'
但是,這是MySQL的不是如何接受設置要這樣初始化,我更換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
。我錯過了什麼?
對不起,很長的文章。
您並未解決數據的安全問題,更不用說將數據存入表格。你應該使用[準備語句](http://stackoverflow.com/questions/9629328/how-to-use-mysqli-prepared-statements-in-php)而不是 – Machavity
除此之外,它不是很好的做db查詢的方法回答你的問題'$ qlanguages'已經'''圍繞它了。你應該做'... VALUES('$ qfirst_name','$ qlast_name',$ qlanguages)「;' – manRo