Php SQL:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法 错误代码
您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在“@LNG_ID:=16”附近使用的正确语法;如果第3、4行的ART_LOOKUP.ARL_KIND为BRANDS,则选择DISTINCT。第2行的BRA_B' 这是我的PHP代码和我的查询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/
<?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,它在前端脚本中已修复。@你想说什么?^-<…我的贡献已被记录。