Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mysql使用for循环保存mysql_Php_Mysql_For Loop - Fatal编程技术网

php mysql使用for循环保存mysql

php mysql使用for循环保存mysql,php,mysql,for-loop,Php,Mysql,For Loop,表: PHP MYSQL: 09:00 -- id_timeslot = 1 09.15 -- id_timeslot = 2 09.30 -- id_timeslot = 3 09.45 -- id_timeslot = 4 10.00 -- id_timeslot = 5 for($i=0;$iquery)(“插入书店(id\u时隙、id\u成员、b\u参考、id\u医生、状态) 值(“++$id\u时隙。”,“$id\u成员。”,“$b\u参考。”,“$id\u医生。”,1)”) }

表:

PHP MYSQL:

09:00 -- id_timeslot = 1
09.15 -- id_timeslot = 2
09.30 -- id_timeslot = 3
09.45 -- id_timeslot = 4
10.00 -- id_timeslot = 5
for($i=0;$iquery)(“插入书店(id\u时隙、id\u成员、b\u参考、id\u医生、状态)
值(“++$id\u时隙。”,“$id\u成员。”,“$b\u参考。”,“$id\u医生。”,1)”)
}
我希望数据保存两次并增加id\u时隙

上面的代码工作正常,但是当save被删除时,它没有选择正确的id\u时间段


例如:如果用户单击id\u时隙:1,它很快就会保存到数据库中。id\u时隙从2开始,而不是id\u时隙1

您必须从数据库中获取最后一个
id\u时隙
,然后在插入过程中增加它

如果用户单击id\u时隙:1,它很快就会保存到数据库中,id\u时隙从2开始,而不是从id\u时隙1开始

这是因为您使用的是前置增量而不是后置增量。如果进入循环前
$id\u时隙
为1,则
+$id\u时隙
的值为2,因此生成的第一个查询为:

for($i=0; $i<=2; $i++) {  
  $mysqli->query("INSERT INTO bookslot(id_timeslot, id_member, b_ref, id_doctor, status)   
  VALUES  ('" . ++$id_timeslot . "', '" . $id_member . "', '" . $b_ref . "', '" . $id_doctor . "', 1)" )  
}
如果id\u timeslot列应该是bookslot记录的id,那么最好的方法是使用AUTO\u INCREMENT属性声明它,而不插入该列的值:

"INSERT INTO bookslot(id_timeslot, id_member, b_ref, id_doctor, status)   
 VALUES  ('2', '$id_member', '$b_ref', '$id_doctor', 1)"
使用双引号字符串时,不需要连接变量。请将上述语句与您自己的语句进行比较

如果id\u时隙不是唯一的id,那么您可以简单地切换到post increment

-- run just once in some MySQL client
ALTER TABLE bookslot MODIFY id_timeslot INT UNSIGNED PRIMARY KEY AUTO_INCREMENT;

// in PHP
$stmt = "INSERT INTO bookslot(id_member, b_ref, id_doctor, status)   
         VALUES  ('$id_member', '$b_ref', '$id_doctor', 1)";
由于各种其他原因,这可能是正确的方法,也可能不是正确的方法。如果不了解更多关于模式的信息,就不可能说

离题 根据$id_member、$b_ref$id_doctor的值的起始位置,您的脚本可以打开。不要直接将值插入字符串中,而是使用一个准备好的语句。支持它们,就像支持它们一样,使用起来更简单。新代码应该使用PDO,旧代码应该随着时间的推移而更新

$stmt = "INSERT INTO bookslot(id_timeslot, id_member, b_ref, id_doctor, status)   
         VALUES  (" . $id_timeslot++ . ", '$id_member', '$b_ref', '$id_doctor', 1)";