我正在尝试使用sql查询,但我得到多次相同的结果。
我读到我必须使用INNER JOIN或LEFT JOIN来避免这种情况。唯一的问题是我对mysql有点新手,所以我实际上无法成功查询。
查询是
SELECT *
FROM table1,table2
WHERE table1.name LIKE '%$str%'
OR
table1.last_name LIKE '%$str%'
$str
是一个字符串,我在php函数中传递以进行搜索。
答案 0 :(得分:0)
您需要在这两个表之间建立联接。
SELECT *
FROM table1
INNER JOIN table2
ON table1.key = table2.key
WHERE table1.name LIKE '%$str%'
OR
table1.last_name LIKE '$str%'
您还应该使用mysql_real_escape_string
来防止SQL注入。
$query = "SELECT *
FROM table1
INNER JOIN table2
ON table1.key = table2.key
WHERE table1.name LIKE '%" . mysql_real_escape_string($str) ."%'
OR
table1.last_name LIKE '%" . mysql_real_escape_string($str) ."%'";
以下是escape string的文档。
答案 1 :(得分:0)
你可以尝试:
SELECT DISTINCT t1,*, t2.*
FROM table1 t1 INNER JOIN table2 t2
ON t1.id = t2.table1_id
WHERE
table1.name LIKE '%$str%' OR
table1.last_name LIKE '%$str%'