-3

我写了一个 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();
  }
?> 

谢谢!


更新(用 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

4 回答 4

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 && $sql2 == TRUE 变成“1”,这是一个无效的查询。

于 2013-05-16T19:08:32.840 回答
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 函数

于 2013-05-16T19:05:04.420 回答
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')";

也看看这个帖子

ps:另外我不太确定这个命令:

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

查看此文档(已弃用并表示“不支持多个查询”)。我认为你应该使用...

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

干杯!

于 2013-05-16T19:02:35.617 回答
1
if (mysql_query($sql1);
        mysql_query($sql2);
        mysql_query($sql3);
        mysql_query($sql4);
        mysql_query($sql5);)

是错的。您应该在每个语句之间使用逻辑运算符,例如 && (AND)、|| (或者)

于 2013-05-16T19:25:32.863 回答