gpt4 book ai didi

php - MySQL PHP插入多行

转载 作者:行者123 更新时间:2023-11-29 10:37:04 25 4
gpt4 key购买 nike

我有一个可以在MySQL数据库中插入记录的代码

if (isset($_POST['horaseguinte'])){
$horaseguinte = $_POST['horaseguinte'];
$sql="INSERT INTO reservas (cod, data, hora, user, reservas, pc, colunas, outros, sala) VALUES (NULL, '$mydate', '$hora1', '$userid', '$proj', '$pc', '$col', '$outros', '$sala'),(NULL, '$mydate', '$horaseguinte', '$userid', '$proj', '$pc', '$col', '$outros', '$sala')";
}else{
$horaseguinte="";
$sql="INSERT INTO reservas (cod, data, hora, user, reservas, pc, colunas, outros, sala) VALUES (NULL, '$mydate', '$hora1', '$userid', '$proj', '$pc', '$col', '$outros', '$sala')";
}
if (!mysqli_query($con,$sql))
{
$erro = true;
$erromessage = "Error: " . mysqli_error($con);
}
$id = mysqli_insert_id($con);
mysqli_close($con);
}


但是现在,$ mydate变量可以包含数组中的多个值。例如:数组([0] => 2017-09-20 [1] => 2017-09-27 [2] => 2017-10-04 [3] => 2017-10-11)
因此,考虑到数组存储在$ a中,我将代码更改为:

if (isset($_POST['horaseguinte'])){
$horaseguinte = $_POST['horaseguinte'];
for($i = 0; $i < count($a); $i++) {
$sql.="INSERT INTO reservas (cod, data, hora, user, reservas, pc, colunas, outros, sala) VALUES (NULL, '$a[$i]', '$hora1', '$userid', '$proj', '$pc', '$col', '$outros', '$sala'),(NULL, '$a[$i]', '$horaseguinte', '$userid', '$proj', '$pc', '$col', '$outros', '$sala')";
}
}else{
$horaseguinte="";
for($i = 0; $i < count($a); $i++) {
$sql. = "INSERT INTO reservas (cod, data, hora, user, reservas, pc, colunas, outros, sala) VALUES (NULL, '$a[$i]', '$hora1', '$userid', '$proj', '$pc', '$col', '$outros', '$sala')";
}
}

if (!mysqli_multi_query($con,$sql))
{
$erro = true;
$erromessage = "Error: " . mysqli_error($con);
}
$id = mysqli_insert_id($con);

mysqli_close($con);
}


但是如果返回以下错误:


  可捕获的致命错误:mysqli_result类的对象不能为
  转换成字符串
  /home/louros/public_html/material/add_reserva_savemef.php在第115行


如果有人可以帮助,我将不胜感激!

最佳答案

您必须以分号结束查询。从mysqli_multi_query函数的描述中:


  执行一个或多个由分号连接的查询。


因此,例如,您的第四行将变为:

$sql.="INSERT INTO reservas (cod, data, hora, user, reservas, pc, colunas, outros, sala) VALUES (NULL, '$a[$i]', '$hora1', '$userid', '$proj', '$pc', '$col', '$outros', '$sala'),(NULL, '$a[$i]', '$horaseguinte', '$userid', '$proj', '$pc', '$col', '$outros', '$sala');";


而且,正如Barmar指出的那样,请考虑对每个查询使用单个mysqli_query调用。这样,您可以验证它们每个的成功。

不严格相关但相关:不要在查询中直接插入$ _POST值。曾经这是SQL注入漏洞的最简单示例。有几种方法可以解决此问题,但是 real_escape_string是一个很好的开始。

关于php - MySQL PHP插入多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46235478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com