Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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 如何修复我的查询问题并使其在mariadb服务器上工作?_Php_Mysql_Mariadb - Fatal编程技术网

Php 如何修复我的查询问题并使其在mariadb服务器上工作?

Php 如何修复我的查询问题并使其在mariadb服务器上工作?,php,mysql,mariadb,Php,Mysql,Mariadb,我不确定为什么在运行查询时出现以下错误。您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以获取第1行“”附近要使用的正确语法 这是centos clodlinux serever 服务器版本:10.3.18-MariaDB-cll-lve MariaDB服务器 $data = mysql_query("SELECT subject, dateline, ticketid, fullname, departmentid, priorityid, firstpostid FR

我不确定为什么在运行查询时出现以下错误。您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以获取第1行“”附近要使用的正确语法

这是centos clodlinux serever 服务器版本:10.3.18-MariaDB-cll-lve MariaDB服务器

$data = mysql_query("SELECT subject, dateline, ticketid, fullname, departmentid, priorityid, firstpostid  FROM `swtickets` WHERE ticketstatusid = 1 AND ticketid > ".$_newticket["lastnewticketid"]." ORDER BY dateline ASC LIMIT 1") or die(mysql_error()); while($temp = mysql_fetch_array( $data )) {
$_newticket = $temp; } 

$data = mysql_query("SELECT contents FROM  `swticketposts` WHERE ticketpostid =". $_newticket["firstpostid"]) or die(mysql_error()); while($temp = mysql_fetch_array( $data )) $_newticket["messagecontents"] = $temp['contents'];}

我试图编辑$\u newticket[“firstpostid.”但仍然得到相同的错误。

变量
$\u newticket[“lastnewticketid”]
包含一个空字符串。因此,您的语句看起来像是
SELECT…FROM table WHERE ID>ORDER BY DATELINE…

如果您的代码中有正确的错误处理,您就可以省去这个问题

$stmt= "SELECT subject, dateline, ticketid, fullname, departmentid, priorityid, firstpostid  FROM `swtickets` WHERE ticketstatusid = 1 AND ticketid > ".$_newticket["lastnewticketid"]." ORDER BY dateline ASC LIMIT 1";

if (!($data= mysql_query($stmt)))
{
  fwrite(STDERR, "The statement $stmt failed. Error: " . mysql_error());
  exit(1);
}

回显您的查询以查看它们包含的内容并检查引用不匹配。此外,mysql_*函数从PHP 5.5.0开始就被弃用,从PHP 7.0.0开始被删除。将您的代码切换为使用或替代。确保使用准备好的语句和参数绑定,这样您就不必再担心引用问题。可能重复使用绑定,不是连接。我知道mysql扩展已经被弃用了(我在15年前写过mysqli),但这不是问题所在。如果您将mysql api调用替换为mysqli,问题仍然会是一样的。不是真的。使用mysqli,您可以启用错误报告,并且您会发现这个问题更容易解决。同样,使用准备好的语句,这个问题也不会发生。