Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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 SQL:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法 错误代码_Php_Mysql_Sql - Fatal编程技术网

Php SQL:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法 错误代码

Php SQL:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法 错误代码,php,mysql,sql,Php,Mysql,Sql,您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在“@LNG_ID:=16”附近使用的正确语法;如果第3、4行的ART_LOOKUP.ARL_KIND为BRANDS,则选择DISTINCT。第2行的BRA_B' 这是我的PHP代码和我的查询 <?php if (!ini_get('display_errors')) { ini_set('display_errors', '1'); } //header("Content-type: text/

您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在“@LNG_ID:=16”附近使用的正确语法;如果第3、4行的ART_LOOKUP.ARL_KIND为BRANDS,则选择DISTINCT。第2行的BRA_B'

这是我的PHP代码和我的查询

        <?php
if (!ini_get('display_errors')) {
    ini_set('display_errors', '1');
}
//header("Content-type: text/html; charset=windows-1251");
$securecheck = 'live_search';
$search = $_GET['search'];
$search = str_replace(' ', '%', $search);
//$search = "%" . $search . "%";
   if($search == ''){
      die("empty query");
   }

$query = mysql_query("SET @NUMBER := '" . $search . "';
@LNG_ID := 16;

SELECT DISTINCT
    IF (ART_LOOKUP.ARL_KIND IN (3, 4), BRANDS.BRA_BRAND, SUPPLIERS.SUP_BRAND) AS BRAND,
    ART_LOOKUP.ARL_SEARCH_NUMBER AS NUMBER,
    ART_LOOKUP.ARL_KIND,
    ART_LOOKUP.ARL_ART_ID,
    DES_TEXTS.TEX_TEXT AS ART_COMPLETE_DES_TEXT
FROM
               ART_LOOKUP
     LEFT JOIN BRANDS ON BRANDS.BRA_ID = ART_LOOKUP.ARL_BRA_ID
    INNER JOIN ARTICLES ON ARTICLES.ART_ID = ART_LOOKUP.ARL_ART_ID
    INNER JOIN SUPPLIERS ON SUPPLIERS.SUP_ID = ARTICLES.ART_SUP_ID
    INNER JOIN DESIGNATIONS ON DESIGNATIONS.DES_ID = ARTICLES.ART_COMPLETE_DES_ID
    INNER JOIN DES_TEXTS ON DES_TEXTS.TEX_ID = DESIGNATIONS.DES_TEX_ID
WHERE
    ART_LOOKUP.ARL_SEARCH_NUMBER = @NUMBER AND
    ART_LOOKUP.ARL_KIND IN (1, 2, 3, 4) AND
    DESIGNATIONS.DES_LNG_ID = @LNG_ID
GROUP BY
    BRAND,
    NUMBER
;
") or die (mysql_error());
echo $query;
$count = mysql_num_rows($query);
echo $count;
if($count > 0){
   $sql = mysql_fetch_array($query);
   do{
     echo "<div>" . $sql['ART_COMPLETE_DES_TEXT'] . "</div>";
   }while($sql = mysql_fetch_array($query));
}else{
   echo "no results";
}
?>

不能使用“过时”命令运行多个查询

你需要使用MySQLi来实现这一点。
实际上,您不需要执行多个查询。您可以删除以下行:

SET @NUMBER := '" . $search . "';
@LNG_ID := 16;
并用相应的PHP值替换所有@NUMBER和@LNG_ID,例如:

ART_LOOKUP.ARL_SEARCH_NUMBER = @NUMBER AND
会是

ART_LOOKUP.ARL_SEARCH_NUMBER = '".$search."' AND

无法在mysql\u查询的一次调用中执行两条语句。使用请确保在将$\u GET['search']插入DB查询之前将其转义。阅读SQL injection.DISTINCT和GROUP BY以及no aggregating-hat tricki知道SQL injection,它在前端脚本中已修复。@你想说什么?^-<…我的贡献已被记录。