[英]php mysql select box
我有一個選擇框,我希望循環添加到數據庫中。 它對我來說看起來不錯,但不會進入數據庫。
<select name="countylist" style="height:300px;" class="multiple" multiple="multiple" id="box2View">
<option value="11">Beer Gardens</option><option value="10">Historic Bars</option>
<option value="8">Live Music</option><option value="1">Night Clubs</option>
<option value="4">Pubs Serving Food</option><option value="6">Sports Bars</option>
</select>
SQL:
foreach($_POST["countylist[]"] as $s) {
$insertSQL = sprintf("INSERT INTO cat_pubs (pub_id, cat_id)
VALUES(LAST_INSERT_ID(),". $s . ")");
mysql_select_db($database_localhost, $localhost);
$Result1 = mysql_query($insertSQL, $localhost) or die(mysql_error());
}
謝謝
您將需要調整選擇的名稱,使其包含數組標記[]
如下所示:
<select name="countylist[]"...
然后在PHP中刪除數組標記,如下所示:
foreach($_POST["countylist"] as...
非常重要的是,在PHP中,您檢查輸入實際上是允許的值之一,而不是用戶惡意輸入的內容。 對於選擇而言,最簡單的方法是保存一個允許值的數組,然后進行檢查:
if(!in_array($s, $allowed_counties)) { /*false input, do not save in db*/}
您需要將select標記的名稱更改為countylist[]
以便PHP知道它代表一個數組:
<select name="countylist[]"/>
您要如何處理LAST_INSERT_ID()
?
在這種情況下,請將值存儲在變量中,因為在您第一次(新)插入之后它將被覆蓋。
然后,僅不要在插入內容中命名該列,或在值中輸入NULL:
INSERT INTO cat_pubs (cat_id) VALUES(". $s . ")");
PS:如果您只是通過從像這樣的字符串中構建SQL, 就將 POST中的數據直接插入到數據庫中,那么您將被MySQL Injection所欺騙。 轉義字符串,或使用准備好的語句...
一些指針,您需要告訴POST,該值是一個帶有name="countylist[]"
的數組,否則您只能在php中獲得最后選擇的值。
同樣,如果您執行多個插入操作,則與迭代結果並在每次迭代中插入操作相比,為插入操作構建單個查詢總是更快。
您還在每次迭代中選擇了錯誤的數據庫:
<?php
//connect
mysql_connect('localhost','user','pass');
//select your db
mysql_select_db('database');
//is posted
if($_SERVER['REQUEST_METHOD']=='POST'){
//build query for a single insert
$query = 'INSERT INTO cat_pubs (pub_id, cat_id) VALUES ';
foreach($_POST["countylist"] as $s) {
$query .='("","'.mysql_real_escape_string($s).'"),';
}
//trim the last ,
$query = rtrim($query,',');
}
//do query
$result = mysql_query($query) or die(mysql_error());
?>
<form method="POST" action="">
<!-- tell POST that countylist is an array -->
<select name="countylist[]" style="height:300px;" class="multiple" multiple="multiple" id="box2View">
<option value="11">Beer Gardens</option>
<option value="10">Historic Bars</option>
<option value="8">Live Music</option>
<option value="1">Night Clubs</option>
<option value="4">Pubs Serving Food</option>
<option value="6">Sports Bars</option>
</select>
<p><input type="submit" value="Submit"></p>
</form>
可以的例子,我有一個評論:
使用mysql_real_escape()喜歡
$insertSQL = sprintf("INSERT INTO cat_pubs (pub_id, cat_id) VALUES(LAST_INSERT_ID(),". mysql_real_escape_string($s) . ")");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.