0

php/sql初心者です。LIKE 名前検索を完全一致検索に変更しようとしています。テーブルにあることがわかっている検索値を使用しても、レコードが見つかりません。

元のコード:

 $sch = "SELECT record_key, surname, given_names, birth_date, death_date, age
               FROM records
               WHERE surname LIKE '".addslashes($name)."%';
    $result = mysql_query($sch);

新しいコード:

 $sch = "SELECT record_key, surname, given_names, birth_date, death_date, age
               FROM records
               WHERE surname = '".addslashes($name)."%';
    $result = mysql_query($sch);

以下を含め、考えられるすべてを試しました。

 WHERE surname = 'addslashes($name)';

(" 各 end または % の理由はわかりませんでした)

私がそれを機能させる唯一の方法は、addslashes を破棄して次のように使用することです。

注射に対して脆弱であると私は理解しています。

4

4 に答える 4

0

二重引用符でクエリ文字列を適切に終了するようにしてください。

$sch = "SELECT record_key, surname, given_names, birth_date, death_date, age
 FROM records
 WHERE surname LIKE '".addslashes($name)."%'";
于 2013-09-20T07:38:36.203 に答える