Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.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?_Php_Mysql - Fatal编程技术网

Php 如何从这段代码中为每一行更新MySQL?

Php 如何从这段代码中为每一行更新MySQL?,php,mysql,Php,Mysql,我正在尝试更新行“跟踪”、“承运人”、“状态”,其中状态“等待跟踪” $sql=“从状态为“等待跟踪”的订单中选择*; $result=$mysqli->query($sql); 如果($result->num_rows>0){ 而($row=$result->fetch_assoc()){ $id=$row['id']; $tracking=$row['tracking']; $carrier=$row['carrier']; $link=$row['link']; //从URL或文件获取DO

我正在尝试更新行“跟踪”、“承运人”、“状态”,其中状态“等待跟踪”

$sql=“从状态为“等待跟踪”的订单中选择*;
$result=$mysqli->query($sql);
如果($result->num_rows>0){
而($row=$result->fetch_assoc()){
$id=$row['id'];
$tracking=$row['tracking'];
$carrier=$row['carrier'];
$link=$row['link'];
//从URL或文件获取DOM
$html=file\u get\u html($link);
//查找数据为qa=装运跟踪编号的td标签
foreach($html->find('td[data qa=shipping tracking number]”)作为$tracking)
$tracking=$tracking->plaintext;
//查找数据为qa=装运承运人的td标签
foreach($html->find('td[data qa=shipping carrier]”)作为$carrier)
$carrier=$carrier->纯文本;
如果(isset($tracking)){
$tracking=“更新订单集跟踪='$tracking',其中id='$id';
$tracking_result=$mysqli->query($tracking);
if($mysqli->query($tracking\u result)==true){
$pendnig=“更新订单集状态='Pending',其中id='$id';
$pending_result=$mysqli->query($pending);
}
}
如果(isset($carrier)){
$carrier=“更新订单集carrier='$carrier',其中id='$id';
$carrier\u result=$mysqli->query($carrier);
}
}
}

执行文件时,只更新我的“跟踪”和“承运商”,不将状态更新为“待定”,只更新第一行,不更新其他行。

您可以检查更新查询是否成功,如下所示:

if($tracking_result) {
    $pendnig = "UPDATE orders SET status = 'Pending' WHERE id = '$id'";
    $pending_result = $mysqli->query($pending);
}

希望它能帮助您。

我已经用新代码修复了它

$sql=“从状态为“等待跟踪”的订单中选择*;
$result=$mysqli->query($sql);
如果($result->num_rows>0){
而($row=$result->fetch_assoc()){
$id=$row['id'];
$tracking=$row['tracking'];
$carrier=$row['carrier'];
$link=$row['link'];
//从URL或文件获取DOM
$html=file\u get\u html($link);
//查找数据为qa=装运跟踪编号的td标签
foreach($html->find('td[data qa=shipping tracking number]”)作为$tracking)
$tracking=$tracking->plaintext;
//查找数据为qa=装运承运人的td标签
foreach($html->find('td[data qa=shipping carrier]”)作为$carrier)
$carrier=$carrier->纯文本;
如果(isset($tracking)){
$tracking=“更新订单集跟踪='$tracking',其中id='$id';
$tracking_result=$mysqli->query($tracking);
如果($tracking_result===true){
$pendnig=“更新订单集状态='Pending',其中id='$id';
$pending_result=$mysqli->query($pendnig);
}
}
如果(isset($carrier)){
$carrier=“更新订单集carrier='$carrier',其中id='$id';
$carrier\u result=$mysqli->query($carrier);
}
//清理内存
$html->clear();
未结算($html);
}
}

我想你应该修正这个变量输入错误,然后再试一次:“$pendig”与“query($pending)”。@HappyAnt是的,你是对的。已更改,但结果相同。如果这反映了服务器上的实际代码,它将不会运行,因为变量名仍然不匹配…请使用“prepared”语句以避免SQL注入。为什么要使用3个UPDATE语句来更新同一行?是的,您总是需要准备好的语句。这需要相同的时间和相同的时间,避免了实际和未来的问题,这是有帮助的。我使用if($tracking_result==true){echo“success”;$pendnig=“UPDATE orders SET status='Pending'WHERE id='$id'”;$Pending_result=$mysqli->query($pendnig);}它帮助了您:)