我想通过数组在数据库中发送数据,但它没有插入。
<?php
if(isset($_POST['submit'])){
$name=$_POST['name'];
$last=$_POST['last'];
$des=$_POST['des'];
$insData = array( $name,$last,$des);
foreach ($insData as $key => $val){
echo $val."<br>";
}
$v = implode(", ", $val);
$query=mysqli_query($connect,"insert into name(name,last,des) VALUES ('$v')");
if($query){
echo "ok data";
}
else {
echo mysqli_error($connect);
}
}
?>
答案 0 :(得分:1)
看看这一行:
$query=mysqli_query($connect,"insert into name(name,last,des) VALUES ('$v')");
如果$v
等于说delboy1978uk,something,somethingelse
,那么您的SQL将如下所示:
$query=mysqli_query($connect,"insert into name(name,last,des) VALUES ('delboy1978uk,something,somethingelse')");
如您所见,这只是一个字符串。所以你也需要用一些单引号破碎。
$array = ['delboy1978uk', 'something', 'somethingelse'];
$v = implode("','", $array);
echo $v;
将输出:
delboy1978uk','something','somethingelse
意味着您的SQL字符串现在应该有效。
请记住,您最好使用绑定参数来防止SQL注入!见http://php.net/manual/en/mysqli-stmt.bind-param.php
答案 1 :(得分:0)
你可以试试这个
简单但不安全:
<?php
if(isset($_POST['submit'])){
$name=$_POST['name'];
$last=$_POST['last'];
$des=$_POST['des'];
$insData = array( $name,$last,$des);
foreach ($insData as $key => $val) {
echo $val."<br>";
}
$v = implode("', '", $insData);
$query=mysqli_query($connect,"insert into name(name,last,des) VALUES ('$v')");
if($query){
echo "ok data";
}
else
{
echo mysqli_error($connect);
}
}
?>
答案 2 :(得分:0)
您的代码格式不正确(请参阅PSR-1 and PSR-2)。虽然您添加了一些错误处理,但您忽略了告诉我们您编写的代码告诉您的内容。
您向我们展示的代码至少有两个原因不会插入数据:
因为您的输出已经显示,SQL字符串是无意义的。如果您将字符串发送到屏幕而不是(或同样)数据库,您将看到如下内容:
插入名称(姓名,姓氏,des)VALUES('Zeenat,Nazir,des')
但您的查询应该是以下形式:
insert into name(name,last,des) VALUES ('Zeenat', 'Nazir', 'des')
您的代码容易受到SQL注入攻击。
不考虑连接问题,构建SQL的更好方法是:
$sql="insert into name(name,last,des) VALUES ('"
. mysqli_real_escape_string($connection, $_POST['name']) . "','"
. mysqli_real_escape_string($connection, $_POST['last']) . "','"
. mysqli_real_escape_string($connection, $_POST['des']) . "')";