2012-07-09 79 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子句。