此代码用于插入特定规格的单位。例如,如果规格是长度,则单位是厘米,米和毫米。爆炸不起作用
当我尝试使用逗号读取单个文本字段中的所有单位并尝试使用逗号爆炸单位时。 但是,当我提交表格时,只有第一个单元被保存到数据库。
这是我的数据库结构:
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