嘗試插入來自在PHP中動態生成的表單的信息時遇到問題。 表格由可變數量的輸入組成,全部由四個輸入元素組成。請參見下面是如何產生自己的狀態:從多個選中的複選框和輸入到mySQL中的文本輸入插入PHP數組
<?php $result = mysql_query("SELECT id,name,description FROM todo_q WHERE todo_id = $todo_id AND active = 'y'");
while($todo_q=mysql_fetch_array($result)){
echo '<label>';
echo $todo_q['name'];
echo '</label><br>';
echo '<input type="checkbox" name="value[]" value="y" />';
//echo '<input type="hidden" name="value[]" value="n" />';
echo '<label>';
echo $todo_q['description'];
echo '</label><br>';
echo '<input type="text" id="comment" name="comment[]">';
echo '<input type="hidden" name="user_id[]" value="';
echo $user_id;
echo '" />';
echo '<input type="hidden" name="todo_id[]" value="';
echo $todo_q['id'];
echo '" />';
echo '<HR>';
}?>
這是我嘗試插入信息到MySQL:
$query = "INSERT INTO todo_a (value, comment, user_id, todo_id) VALUES ";
$query_parts = array();
for($x=0; $x<count($_POST["value"]); $x++){
$query_parts[] = "('" . $_POST['value'][$x] . "','" . $_POST['comment'][$x] . "'," . $_POST['user_id'][$x] . "," . $_POST['todo_id'][$x] . ")";
}
$q_parts = $query_parts;
foreach ($q_parts as $q_p){
$insert = ($query .= implode(',', $query_parts));
$result = mysql_query($insert);
}
我的問題是,當檢查所有的複選框和評論的一切插入在數據庫的右側,但如果我跳過檢查一個複選框,然後它會搞砸了......
我想插入一個新的行,如果它的複選框被選中和/或輸入評論。 任何人都可以指向正確的方向嗎?
我試圖把一個隱藏的輸入來獲取未經檢查的複選框的值,但我似乎並沒有工作..這就是爲什麼我已經註釋掉隱藏的複選框。
PS。我知道我應該使用mysqli的,但這是一個較舊的網站,我沒有升級尚未..
**強制警告:請請不要在生產中使用此代碼.. **。消毒您的查詢,以防止一些XSS ..還有你檢查了這個相關的問題? http://stackoverflow.com/questions/5640298/php-insert-data-from-checkbox-array-into-mysql?rq=1 – Pogrindis
僅供參考,[你不應該在新代碼中使用'mysql_ *'函數]( http://stackoverflow.com/questions/12859942/)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[紅盒](http://php.net/manual/en/function.mysql-connect.php)?學習[*準備的語句*](https://en.wikipedia.org/wiki/Prepared_statement),並使用[PDO](http://php.net/pdo)或[MySQLi](http:// php.net/mysqli) - [這篇文章](http://php.net/manual/en/mysqlinfo.api.choosing.php)將幫助你決定哪一個最適合你。 –
你的腳本存在[SQL注入攻擊]的風險(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)看看發生了什麼事[Little鮑比表](http://bobby-tables.com/)即使[如果你逃避投入,它不安全!](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around -mysql-real-escape-string)使用[prepared parameterized statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)。 –