我正在使用的此查询返回此表中的所有数据。我想搜索一个确切的身份证号码并让它仅返回结果。另外,我如何在这里实现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/>';
}
?>
答案 0 :(得分:3)
使用:
$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)) { ...
答案 1 :(得分:2)
如果您只查找一行,那么您真的不应该使用LIKE
,而是使用=
,例如:
$sql = mysql_query( sprintf("select * FROM patient WHERE id_number='%s'", mysql_real_escape_string( $_POST['term'] ) ) );
如果符合以下条件,则上述内容应仅返回一行:1)id_number
unique
中的patient
,{2} $term
实际上对应id_number
的值}。
希望这也回答了关于如何使用mysql_real_escape_string()
的问题!
答案 2 :(得分:2)
您可以对用户输入使用mysql_real_escape_string()
,在这种情况下为$_POST['term']
。
如果您想要完全匹配,则不应使用LIKE
:
$term = mysql_real_escape_string($_POST['term']);
$sql = mysql_query("select * FROM patient WHERE id_number = '$term'");