Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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_Mysqli - Fatal编程技术网

上次更新的php脚本行中出现Mysql空查询错误

上次更新的php脚本行中出现Mysql空查询错误,php,mysql,mysqli,Php,Mysql,Mysqli,在网上搜索数小时后,我看不到问题的答案。 正在尝试获取上次更新行的id。这是我的php脚本- $con = mysqli_connect("localhost","DB_NAME","PWD"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } mysqli_select_db($con,"DB") or die ("no d

在网上搜索数小时后,我看不到问题的答案。
正在尝试获取上次更新行的id。这是我的php脚本-

$con = mysqli_connect("localhost","DB_NAME","PWD");  
if (mysqli_connect_errno())  
  {  
  echo "Failed to connect to MySQL: " . mysqli_connect_error();  
  }  
mysqli_select_db($con,"DB") or die ("no database");   


$result=mysqli_query($con,"SET @update_ID := 0;  
UPDATE TABLE_234 SET PLAYERNAME = PETER, ID = (SELECT @update_ID := ID)  
WHERE PLAYERNAME IS NULL  
LIMIT 1;  
SELECT @update_ID ");

if (!mysqli_query($con,$result))  
  {  
  die('Error: ' . mysqli_error($con));  
  }  

echo $ID;  
mysqli_close($con);  
错误-
警告:mysqli_query()… 错误:您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以获取可在附近使用的正确语法


谢谢您的帮助。

您在代码中调用了两次
mysqli\u query
。第一条路是正确的,第二条路是错误的。在第一次调用中,您传递的是SQL字符串,而在第二次调用中,您传递的是结果

根据您的代码,我相信您希望检查
if
语句中的
$result
,如下所示:

if (!$result)  
{  
  die('Error: ' . mysqli_error($con));  
}

试试这样的

$con = mysqli_connect("localhost","DB_NAME","PWD");  
if (mysqli_connect_errno())  
{  
    echo "Failed to connect to MySQL: " . mysqli_connect_error();  
}  
mysqli_select_db($con,"DB") or die ("no database");   
$result=mysqli_query($con,"SET @update_ID := 0;  
    UPDATE TABLE_234 SET PLAYERNAME = PETER, ID = (SELECT @update_ID := ID)  
    WHERE PLAYERNAME IS NULL  
    LIMIT 1;  
    SELECT @update_ID ");

    if (!$result)  
    {  
       die('Error: ' . mysqli_error($con));  
    }  

    echo $ID;  
    mysqli_close($con);  
编辑: 您尝试在最后一行中显示$ID;但是你在php代码中是在哪里设置的呢

试试这个:

$con = mysqli_connect("localhost","DB_NAME","PWD");  
if (mysqli_connect_errno())  
{  
    echo "Failed to connect to MySQL: " . mysqli_connect_error();  
}  
mysqli_select_db($con,"DB") or die ("no database");   
$sql="SET @update_ID := 0;  
    UPDATE TABLE_234 SET PLAYERNAME = PETER, ID = (SELECT @update_ID := ID)  
    WHERE PLAYERNAME IS NULL  
    LIMIT 1;  
    SELECT @update_ID as ID";

if (mysqli_multi_query($con,$sql))
{
  do
    {
    // Store first result set
    if ($result=mysqli_store_result($con))
      {
        while ($row=mysqli_fetch_row($result))
        {

        $ID=$row[0];
        }
      }
    }
  while (mysqli_next_result($con));
}

echo "ID=" . $ID;  
mysqli_close($con);

谢谢你的回答。使用您的代码,我得到一个错误:您的SQL语法有一个错误;查看与您的MySQL服务器版本对应的手册,以了解在“UPDATE TABLE_234 SET PLAYERNAME=PETER,ID=(在第2行选择@update\u ID:=”。不知道有什么问题……我们必须使用mysqli\u multi\u查询,因此请回答编辑后的问题,再次尝试感谢您的帮助。我的问题似乎出现在该语句上方;此处-错误:您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解使用near的正确语法。)更新表_234 SET PLAYERNAME=PETER,ID=(在第2行选择@update\u ID:=”。不知道哪里出了问题…问题是因为您正试图使用
mysqli\u query
执行多个sql语句。您需要
mysqli\u multi\u query
。请查看此处的文档:。非常感谢。错误:您的sql语法有错误;请检查与您的查询对应的手册。)MySQL服务器版本,以便在“updatetable\u 234 SET PLAYERNAME=PETER,ID=”附近使用正确的语法(在第2行选择@UPDATE\u ID:=”。有什么想法吗?