2012-07-09 76 views
-1

我有一个表单,用于搜索数据库中的结果。结果由两列组成。 我想要CONCAT他们为了让它搜索这两列的结果。一旦找到它,我希望它打印出该行。CONCAT和SQL查询

我的错误是:

您的SQL语法错误;检查对应于你的MySQL服务器版本使用附近的正确语法“WHERE CONCAT(类型,””,标识符)= 110' 图书馆在1号线

<?php 
$link = mysql_connect('localhost', 'root', 'root') or die (mysql_error()); 
$db_selected = mysql_select_db ('test',$link); 

$term = $_POST['term']; 
if ($sql = mysql_query ("SELECT CONCAT(Type,' ',Identifier) as srcqry WHERE CONCAT(Type,' ',Identifier) = $term ")) 
{ 
while ($row = mysql_fetch_assoc($sql)){ 
    echo '<br/> Location: '.$row['Location']; 
    echo '<br/> Section: '.$row['Section']; 
    echo '<br/> Identifier: '.$row['Type']. ' ' .$row['Identifier']; 
    echo '<br/><br/>'; 
    } 
} 
else 
{ 
echo die(mysql_error()); 
} 
?> 
+0

需要了解您的RDBMS(您的程序)。 “CONCAT”不同。 – Smandoli 2012-07-09 15:40:11

+0

...我怀疑你可以在'WHERE ...'中使用'CONCAT' ...? – Smandoli 2012-07-09 15:41:09

+3

你的代码容易受到[SQL注入](http://xkcd.com/327/)的影响。 – 2012-07-09 15:42:12

回答

1

尝试更换手册:

SELECT CONCAT(Type,' ',Identifier) as srcqry FROM TableName WHERE CONCAT(Type,' ',Identifier) = '$term' 

即,添加表名称FROM子句和'$term

但是正如@Jack Maney指出的那样,您的代码容易受到SQL注入的攻击。

2

您的SQL需要一个FROM子句。尽管mysql支持“SELECT”,但它不支持使用WHERE子句。