Php 更新最后一个数组后,Foreach循环仍将执行
在完成任务后,我得到一个错误“error:Query为空”,而不是echo结果。我怀疑即使最后一个数组被更新,FOREACH仍会尝试执行查询。我说得对吗 如果是,我如何更正Php 更新最后一个数组后,Foreach循环仍将执行,php,mysql,arrays,foreach,Php,Mysql,Arrays,Foreach,在完成任务后,我得到一个错误“error:Query为空”,而不是echo结果。我怀疑即使最后一个数组被更新,FOREACH仍会尝试执行查询。我说得对吗 如果是,我如何更正 <?php $con = mysql_connect("localhost", "$username" , "$password"); mysql_select_db($database, $con); ?> <?php foreach ($_POST['id'] as $key=&
<?php
$con = mysql_connect("localhost", "$username" , "$password");
mysql_select_db($database, $con);
?>
<?php
foreach ($_POST['id'] as $key=>$id)
{
$order = $_POST['order'][$key];
mysql_query("UPDATE table SET `order`=$order WHERE `id` = $id");
}
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "<div class=\"result\">**1 record updated**</div>";
?>
非常感谢
关于发布这些值的表单的更多信息:您没有正确检查错误,而是调用mysql\u查询两次。这样做:
<?php
foreach ($_POST['id'] as $key=>$id)
{
$order = $_POST['order'][$key];
$result = mysql_query("UPDATE table SET `order`=$order WHERE `id` = $id");
if ($result === false)
{
die('Error: ' . mysql_error());
}
echo "<div class=\"result\">**1 record updated**</div>";
}
?>
强制性通知:
- 不要“使用mysql-使用
或mysqli
PDO
- 请确保正确转义SQL查询的输入。使用mysql\u real\u escape\u string()
- 您没有正确检查错误,而是调用了两次mysql\u查询。这样做:
<?php
foreach ($_POST['id'] as $key=>$id)
{
$order = $_POST['order'][$key];
$result = mysql_query("UPDATE table SET `order`=$order WHERE `id` = $id");
if ($result === false)
{
die('Error: ' . mysql_error());
}
echo "<div class=\"result\">**1 record updated**</div>";
}
?>
强制性通知:
- 不要“使用mysql-使用
或mysqli
PDO
- 请确保正确转义SQL查询的输入。使用mysql\u real\u escape\u string()
$sql
,因此它被视为空字符串
<?php
foreach ($_POST['id'] as $key => $id)
{
$order = mysql_real_escape_string($_POST['order'][$key], $con);
$id = mysql_real_escape_string($id, $con);
$sql = "UPDATE table SET `order` = $order WHERE `id` = $id";
if(!mysql_query($sql, $con))die(mysql_error());
}
?>
注意:(mysql\uquot.*
函数)扩展名为。我建议使用(mysqli.*
functions)或相反
注意:您的代码容易受到攻击。您可以阅读此问题中的解决方案建议:
$sql
,因此它被视为空字符串
<?php
foreach ($_POST['id'] as $key => $id)
{
$order = mysql_real_escape_string($_POST['order'][$key], $con);
$id = mysql_real_escape_string($id, $con);
$sql = "UPDATE table SET `order` = $order WHERE `id` = $id";
if(!mysql_query($sql, $con))die(mysql_error());
}
?>
注意:(mysql\uquot.*
函数)扩展名为。我建议使用(mysqli.*
functions)或相反
注意:您的代码容易受到攻击。您可以阅读此问题中的解决方案建议:。问题可能存在于:
if (!mysql_query($sql,$con))
它的“运行mysql\u查询而不定义$sql
”
虽然我不建议将查询放入循环中,因为这会浪费内存,但对于您的代码示例,请尝试将mysql\u query()
放入如下变量中:
$sql = mysql_query("UPDATE table SET `order`=$order WHERE `id` = $id");
问题可能在于:
if (!mysql_query($sql,$con))
它的“运行mysql\u查询而不定义$sql
”
虽然我不建议将查询放入循环中,因为这会浪费内存,但对于您的代码示例,请尝试将mysql\u query()
放入如下变量中:
$sql = mysql_query("UPDATE table SET `order`=$order WHERE `id` = $id");
在其他情况下,您以前检查过您的连接吗? 如果可以的话,试试这个
<?php
foreach ($_POST['id'] as $key=>$id)
{
$order = $_POST['order'][$key];
$query = "UPDATE table SET `order`=$order WHERE `id` = $id";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
}
if (!$result)
{
die('Error: ' . mysql_error());
}
echo "<div class=\"result\">**1 record updated**</div>";
?>
在其他情况下,您以前检查过您的连接吗? 如果可以的话,试试这个
<?php
foreach ($_POST['id'] as $key=>$id)
{
$order = $_POST['order'][$key];
$query = "UPDATE table SET `order`=$order WHERE `id` = $id";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
}
if (!$result)
{
die('Error: ' . mysql_error());
}
echo "<div class=\"result\">**1 record updated**</div>";
?>
您在什么时候填充了$sql
?不在上面的代码中。。。这是导致错误的空查询。至少,您必须保护$id
不受sql注入的影响。如果它是一个整数,则执行$id=intval($id)
print\r($\u POST)代码>看起来像是又多了一个id然后是订单!mysql_query($sql,$con)但是你在哪里设置$sql呢?我刚刚用init文件的内容更新了这个问题。是的,Dagon,我从一个表单中有几个ID和订单。您在什么时候填充了$sql
?不在上面的代码中。。。这是导致错误的空查询。至少,您必须保护$id
不受sql注入的影响。如果它是一个整数,则执行$id=intval($id)
print\r($\u POST)代码>看起来像是又多了一个id然后是订单!mysql_query($sql,$con)但是你在哪里设置$sql呢?我刚刚用init文件的内容更新了这个问题。是的,达贡,我有几个身份证和表格上的订单。谢谢!但是想知道为什么即使没有$sql=Thank,它仍然会更新表!但是想知道为什么即使没有$sql=Thank,它仍然更新表,我使用了你的方法并添加了这个=>foreach($\u POST['id']as$key=>$ids){$id=mysql\u real\u escape\u string(ids);…}谢谢,我使用了你的方法并添加了这个=>foreach($\u POST['id']as$key=>ids){$id=mysql\u real\u escape\u string(ids);…}