此代碼用於插入特定規格的單位。例如,如果規格是長度,則單位是釐米,米和毫米。爆炸不起作用
當我嘗試使用逗號讀取單個文本字段中的所有單位並嘗試使用逗號爆炸單位時。 但是,當我提交表格時,只有第一個單元被保存到數據庫。
這是我的數據庫結構:
CREATE TABLE IF NOT EXISTS `tbl_unit` (
`unit_id` varchar(5) NOT NULL,
`unit_name` varchar(50) NOT NULL,
`specification_id` int(11) NOT NULL,
PRIMARY KEY (`unit_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
這是我的代碼:
<?php
include("../config.php");
$uid=$_POST['unitid'];
$unit=$_POST['unitname'];
$spec=$_POST['specification'];
$arr1 = explode(',',$unit);
$size=count($arr1);
for($i=0;$i<$size;$i++)
{
mysql_query("insert into tbl_unit values('".$uid."','$arr1[$i]','".$specification."')");
}
header('Location:addunit.php');
?>
什麼是困惑我的是,當我嘗試插入$arr1[0]
,$arr1[1]
或$arr1[2]
單獨的值是保存。我認爲for循環只執行一次。 for循環有什麼問題?
您的代碼易受SQL注入影響。你應該閱讀[如何在PHP中防止它們](http://stackoverflow.com/q/60174/53114)。 – Gumbo
歡迎來到Stack Overflow!此外[不推薦使用mysql擴展](http://www.php.net/manual/en/function.mysql-query.php)。您應該切換到[MySQLi](http://www.php.net/manual/en/book.mysqli.php)或[PDO](http://www.php.net/manual/en/ref.pdo -mysql.php)並使用預準備語句。 – TimWolla
'var_dump($ arr1);'看到爆炸的作品,我不會爆炸盲人。我會考慮一個strpos檢查,比如'if(strpos($ unit,',')!== FALSE){echo「INPUT IS READY TO EXPLODE」; }'。您不應該在循環中查詢,爲什麼不檢查Query的返回值(請參閱http://php.net/mysqli_query)... – pce