Php 不带WHERE且使用键列的SQL

Php 不带WHERE且使用键列的SQL,php,sql,magento,Php,Sql,Magento,我的脚本正在退出应该没有问题的SQL调用。无法更新的查询之一是: UPDATE dist\u comp.private\u schools SET mail\u address='1351 Royalty Dr',city='Alabaster',state='AL',zip\u code=35007,phone='2056633973',其中school\u name='Kingwood Christian school',city='Alabaster' 当我在MySQL workbench

我的脚本正在退出应该没有问题的SQL调用。无法更新的查询之一是:

UPDATE dist\u comp.private\u schools SET mail\u address='1351 Royalty Dr',city='Alabaster',state='AL',zip\u code=35007,phone='2056633973',其中school\u name='Kingwood Christian school',city='Alabaster'

当我在MySQL workbench中运行相同的查询时,我得到

错误代码:1175。您正在使用安全更新模式,并且您试图更新一个不带WHERE的表,该表使用键列禁用安全模式,请在“首选项”->“SQL查询”中切换该选项,然后重新连接。

这就是我退出剧本的原因吗

<?php
require_once('connect.php');

function schoolInfo($school_name,$city){
    $data = array();
    $counter = 0;  
    $handle = fopen("k12privateschools_loc_0813.csv","r") or exit('doesnt work');
    fgetcsv($handle) or exit('fgetcsv issue');

    while( ($line = fgetcsv($handle)) !== false) {
        $data[] = $line;

        ///echo ("Does schoolname and city match: " . addslashes($data[$counter][2]). ":" . $school_name . " ; " . addslashes($data[$counter][4]). ":" . $city . "\n");

        if (addslashes($data[$counter][2])==$school_name && addslashes($data[$counter][4])==$city){
            //echo ('match');       
            if($data[$counter][13] != ""){
                $mail_address = $data[$counter][12];
                $city= $data[$counter][13];
                $state= $data[$counter][14];
                $zip_code= $data[$counter][15];
                $zip_4= $data[$counter][16];
            }else{
                $mail_address = $data[$counter][3];
                $city= $data[$counter][4];
                $state= $data[$counter][5];
                $zip_code= $data[$counter][6];
                $zip_4= $data[$counter][7];
            }
            $phone= $data[$counter][8];

            $query= "UPDATE dist_comp.private_schools SET  
                    mail_address = '".$mail_address."', 
                    city = '".$city."', 
                    state = '".$state."',"; 
            if($zip_code != ""){
                    $query.="zip_code = ".$zip_code.",";
            }
            if($zip_4 != ""){
                $query.="zip_4 = ".$zip_4.",";
            }
                    $query.= "phone = '".$phone."' 
                    WHERE school_name = '".$school_name."' AND city = '" .$city . "'";

            mysqli_query($con,$query);
            if(mysqli_affected_rows($con)==0){
                exit($query . "\n ");
            }
            //echo $query;
        }//end if counter \
        else{
            //echo("no match");
            }
        $counter++;
    }//end read lines from file
}
    echo "starting import \n";

        //Query for all school names
        $sql2 = mysqli_query($con,"SELECT school_name,city FROM dist_comp.private_schools") or exit('query issue second');
            while($row = mysqli_fetch_array($sql2)){ //this line is making it take a really long time
                $school_name= addslashes($row['school_name']);
                $city = addslashes($row['city']);
                schoolInfo($school_name,$city);
            }//end while fetch array

    //}
  echo "Import finished";
?>

在查询之前,尝试使用此行禁用
安全更新

 mysqli_query($con,"SET sql_safe_updates=0");
或使用:

$query="SET sql_safe_updates=0";

$query.= "UPDATE dist_comp.private_schools SET  
                mail_address = '".$mail_address."', 
                city = '".$city."', 
                state = '".$state."';"; 


mysqli_multi_query($con,$query);
或在MySQL工作台中:

  • 编辑->首选项->SQL查询
  • 取消选中禁止更新和删除没有WHERE子句的语句 (安全更新)
  • 查询-->重新连接到服务器

请阅读这篇文章,但运行脚本是否也一样?添加设置SQL\u安全\u更新=0;要查询?是的,这对我不起作用。试试这个
SET SQL\u SAFE\u UPDATES=0或您需要它?它应该设置为0。它是0,1用于启用sorry谢谢。我正在尝试。
$query = 'SET SQL_SAFE_UPDATES=0;';

$query .= 'custom query here;';

$query .= 'SET SQL_SAFE_UPDATES=1;';