[英]How can I use OR statement in mysql php
我正在嘗試使用ajax,mysql和php為庫創建實時搜索框。 我已經實現了對書籍的搜索。 即,當您輸入書名時,它會顯示建議。 但是,我正在嘗試對數據庫中的authors列也實現它,以便當您鍵入作者的名字時,它顯示了作者從數據庫寫的書,但我似乎沒有得到第4行上的mysql語句正確。 請幫忙。
<?php
include('config.php');
$s1=$_REQUEST["n"];
$sql="SELECT * from books where (Title like '%".$s1."%') OR (Author like '%'.s1.'%')";
$result=mysqli_query($conn,$sql);
$s="";
<?php
include('config.php');
$s1=$_REQUEST["n"];
$sql="SELECT * from books where `Title` like '%".$s1."%' OR `Author` like '%".$s1."%')";
$result=mysqli_query($conn,$sql);
查詢代碼行中的引號放錯了位置,並且缺少$
。 所以你需要改變
Author like '%'.s1.'%'
至:-
Author like '%".$s1."%'
注意:-您的查詢對SQL INJECTION
是開放的,因此請嘗試使用prepared statements
參考:-
我個人不喜歡OR。 相反,我更喜歡聯盟。 嘿,我按小時得到薪水(實際上我得到薪水),但我仍然喜歡使事情變得過於復雜。
<?php
include('config.php');
$s1=$_REQUEST["n"];
$sql="
SELECT
b.*
FROM
books AS b
JOIN
(
SELECT
id
FROM
books
WHERE
Title like ?'
UNION
SELECT
id
FROM
books
WHERE
Author like ?
) AS v
ON b.id = v.id
";
$stmt = mysqli_prepare($conn,$sql);
$stmt->bind_param("ss", '%'.$si.'%', '%'.$si.'%');
$stmt->execute();
$stmt->store_result();
$resultrow = array();
$stmt->bind_assoc($stmt, $resultrow);
while($stmt->fetch())
{
print_r($resultrow);
}
實際上,沒有哪個性能更好,或者“ OR”對性能沒有好處。 如果您僅使用ID在子查詢中執行此操作,那么通過合並創建的臨時表就很小了,然后只需聯接並提取所需的內容,進行排序等即可,而且速度應該快幾倍,如果您有幾百萬條記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.