组合多个查询语句时解析错误

时间:2013-05-16 18:58:13

标签: php mysql

我写了一个PHP代码来替换SQL行值。但它没有按预期工作

错误:解析错误:语法错误,第3行......中的意外T_STRING

我想我不应该使用这些引用" "对吗?但是,当我在没有" "的情况下运行此错误时

更新评论表时出错:您的SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第1行使用“1”附近的正确语法

这是我的代码

<?php    
include_once("db.php");    
$sql1 = "update table1 set marks = replace(c2,"NK",'NOKIA')";
$sql2 = "update table1 set marks = replace(c2,"SM",'SAMSUNG')";
$sql3 = "update table1 set marks = replace(c2,"A",'APPLE')";
$sql4 = "update table1 set marks = replace(c2,"CH",'CHINAPECE')";
$sql5 = "update table1 set marks = replace(c2,"WO",'WORLDCLASS')";
if (mysql_query($sql1 && $sql2 && $sql3 && $sql4 && $sql5))
  {
  echo "Replaced.";
  }
else
  {
  echo "Error in replacing: " . mysql_error();
  }
?> 

谢谢!


UPDATE(由Trinimon和beiller吸收sujjestions更新的PHP代码)

错误:解析错误:语法错误,意外';'在....第8行

<?php    
    include_once("db.php");
    $sql1 = "update table1 set marks = replace(c2,"NK",'NOKIA')";
    $sql2 = "update table1 set marks = replace(c2,"SM",'SAMSUNG')";
    $sql3 = "update table1 set marks = replace(c2,"A",'APPLE')";
    $sql4 = "update table1 set marks = replace(c2,"CH",'CHINAPECE')";
    $sql5 = "update table1 set marks = replace(c2,"WO",'WORLDCLASS')";
    if (mysql_query($sql1);
        mysql_query($sql2);
        mysql_query($sql3);
        mysql_query($sql4);
        mysql_query($sql5);)
  {
      echo "Replaced.";
      }
    else
      {
      echo "Error in replacing: " . mysql_error();
      }
    ?> 

错误:解析错误:语法错误,意外';'在....第8行

4 个答案:

答案 0 :(得分:3)

 mysql_query($sql1 && $sql2 && $sql3 && $sql4 && $sql5);

这是不正确的。每个$ sql一个mysql_query。

mysql_query($sql1);
mysql_query($sql2);
mysql_query($sql3);
mysql_query($sql4);
mysql_query($sql5);

正如您的错误消息显示$ sql1&amp;&amp; $ sql2 == TRUE,变为“1”,这是一个无效的查询。

答案 1 :(得分:2)

您的问题是由未转义的引号引起的。使用单引号在查询字符串中定义值。这样就不那么容易混淆了。

这些陈述也有问题。由于您要使用分隔符;

组合语句,因此必须将它们终止
$sql = "update table1 set marks = replace(c2,'NK','NOKIA');";
$sql .= "update table1 set marks = replace(c2,'SM','SAMSUNG');";
$sql .= "update table1 set marks = replace(c2,'A','APPLE');";
$sql .= "update table1 set marks = replace(c2,'CH','CHINAPECE');";
$sql .= "update table1 set marks = replace(c2,'WO','WORLDCLASS');";

并且像这样查询:

mysql_query($sql);

注意:请不要使用不推荐使用的MYSQL_ * API函数

答案 2 :(得分:1)

或者使用此

$sql1 = "update table1 set marks = replace(c2,\"NK\",'NOKIA')";
$sql2 = "update table1 set marks = replace(c2,\"SM\",'SAMSUNG')";
$sql3 = "update table1 set marks = replace(c2,\"A\",'APPLE')";
$sql4 = "update table1 set marks = replace(c2,\"CH\",'CHINAPECE')";
$sql5 = "update table1 set marks = replace(c2,\"WO\",'WORLDCLASS')";

Se this post

p.s。:另外我对这个命令不太确定:

if (mysql_query($sql1 && $sql2 && $sql3 && $sql4 && $sql5))

结帐this documentation(已弃用,并说“不支持多个查询”)。我想你应该用......

$con=mysqli_connect("host","user","password","database");
mysqli_query($con,$sql1);
mysqli_query($con,$sql2);
...

干杯!

答案 3 :(得分:1)

if (mysql_query($sql1);
        mysql_query($sql2);
        mysql_query($sql3);
        mysql_query($sql4);
        mysql_query($sql5);)

错了。您应该在每个语句之间使用逻辑运算符,例如&amp;&amp; (AND),|| (OR)