-1

データベースを検索して結果を得るフォームがあります。結果は、2 つの列で構成されます。これらの列の両方で結果を検索するために、それらを CONCAT しようとしています。それが見つかったら、その行を印刷したいと思います。

私のエラーは次のとおりです。

SQL 構文にエラーがあります。1 行目の 'WHERE CONCAT(Type,' ',Identifier) = Library 110' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

<?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());
}
?>
4

2 に答える 2

2

SQL には FROM 句が必要です。mysql は「SELECT」をサポートしていますが、WHERE 句ではサポートしていません。

于 2012-07-09T15:50:47.897 に答える
1

次のように置き換えてみてください:

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

すなわち。FROMテーブル名 with句を追加し、 を'囲みます$term

ただし、@Jack Maneyが指摘したように、コードは SQL インジェクションに対して脆弱です。

于 2012-07-09T15:47:09.560 に答える