簡體   English   中英

有人可以告訴我這個MySQL查詢有什么問題嗎?

[英]Can someone tell me what is wrong with this MySQL query?

我正在使用的此查詢返回此表中的所有數據。 我想搜索一個確切的ID號,並僅返回該結果。 另外,如何在這里實現mysql_real_escape_string()?

謝謝!

$term = $_POST['term'];

$sql = mysql_query("select * FROM patient WHERE id_number LIKE '%$term%'");

while ($row = mysql_fetch_array($sql)){

    echo 'ID: '                 .$row['id'];
    echo '<br/> First Name: '   .$row['first_name'];
    echo '<br/> Last Name: '    .$row['last_name'];
    echo '<br/> Business Name: '    .$row['business_name'];
    echo '<br/> ID Number: '    .$row['id_number'];
    echo '<br/><br/>';
} 
?>

采用:

$query = sprintf("SELECT p.*
                    FROM PATIENT p
                   WHERE p.id_number = '%s'",
                  mysql_real_escape_string($_POST['term']));

$result = mysql_query($query)

while($row = mysql_fetch_array($sql)) { ...

參考:

如果只查找一行,則實際上不應該使用LIKE ,而是= ,例如:

$sql = mysql_query( sprintf("select * FROM patient WHERE id_number='%s'", mysql_real_escape_string( $_POST['term'] ) ) );

如果以下情況,以上內容僅返回一行:1) id_numberpatientunique的,以及2) $term實際上對應於id_number的值。

希望這也能回答您有關如何使用mysql_real_escape_string()問題!

您將在用戶輸入上使用mysql_real_escape_string() ,在本例中為$_POST['term']

如果您想要完全匹配,則不應使用LIKE

$term = mysql_real_escape_string($_POST['term']);

$sql = mysql_query("select * FROM patient WHERE id_number = '$term'");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM