我想一次运行一个包含多个语句的查询,从我的数据库中删除记录。我构建了如下所示的mysql查询:
$query = "DELETE FROM myTable1 WHERE indexID = '".$myVar."' LIMIT 1; ";
$query .= "DELETE FROM myTable2 WHERE indexID = '".$myVar."' LIMIT 1; ";
$query .= "DELETE FROM myTable3 WHERE indexID = '".$myVar."' LIMIT 6; ";然后,我将我的查询称为:
if(!$result = mysqli_query($db, $query)) {
echo "error with $query";
} 我做错什么了吗?当复制并在phpMyAdmin中运行时,打印出来的查询工作得很好。
发布于 2013-10-02 15:05:39
这个问题的答案是使用内置的php函数:
mysqli_multi_query($db, $query)它不仅限于删除查询,还包括任何多语句查询。但是由于DELETE并不像SELECT那样返回我感兴趣的任何值,所以我们不需要太担心查询的结果集。
如果我们关注结果集,那么由kushal提供的具有循环答案的数组可能是一个有用的起点。
发布于 2013-10-02 06:13:02
我认为您应该创建一个查询数组,然后在循环中执行,如
$query = array["DELETE FROM myTable1 WHERE indexID = '".$myVar."' LIMIT 1",
"DELETE FROM myTable2 WHERE indexID = '".$myVar."' LIMIT 1",
DELETE FROM myTable3 WHERE indexID = '".$myVar."' LIMIT 6"];然后在循环中执行
for($i=0; $i<sizeof($query);$i++)
{
$result[$i]=mysql_query($con,$query[$i]);
}发布于 2013-10-01 20:48:42
您需要单独执行这些语句。我不认为mysqli_query()函数支持多条语句。
$query[] = "DELETE FROM myTable1 WHERE indexID = '".$myVar."' LIMIT 1; ";
$query[] = "DELETE FROM myTable2 WHERE indexID = '".$myVar."' LIMIT 1; ";
$query[] = "DELETE FROM myTable3 WHERE indexID = '".$myVar."' LIMIT 6; ";
foreach($query as $q) {
$result = mysqli_query($db, $q);
}https://stackoverflow.com/questions/19125592
复制相似问题