我不明白爲什麼這不起作用。我有以下內容在播種者:「6 4 7」沒有引號,但所有的空間包括開始和結束。這是數據庫中一行的播種者價值。使用LIKE查找字符串內的東西
我有行ID,我轉換成這種形式的字符串(ID爲4)「4」,然後在sowner內部搜索它,看看它是否存在。沒有結果返回。
這裏是我的代碼:
$sql = 'SELECT * FROM `services` WHERE `sowner` LIKE ?';
$stmt = $conn->prepare($sql);
if($stmt === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn->errno . ' ' . $conn->error, E_USER_ERROR);
}
$spacedid = " " . strval($row['id']) . " ";
$stmt->bind_param('s', $spacedid);
$stmt->execute();
$res3 = $stmt->get_result();
的目的是讓人們對IDS的用空格分隔字符串未定義的號碼,只顯示東西的人,如果他們的ID是服務sowner領域內。
我是積極的,因爲如果我刪除WHERE,所有行都顯示出來。
而且我使用的是相同的實施是在上式搜索建議的形式是這樣
SELECT * FROM `users` WHERE username LIKE ?
您應該解決您的數據結構,這樣你就不會存儲在字符串的東西名單。你應該有一個單獨的表,比如說'ServicesOwners',每個服務和所有者都有一行。 –
戈登,有一個像你推薦的關聯表會使數據庫*可能*強制引用完整性,使*更簡單*添加和刪除數據,並使*更容易*查詢。我們爲什麼要這樣做?我的意思是,這種方式從中獲得樂趣,當值列表長度超過我們允許的字符串最大值時,調試生產問題。不是嗎? – spencer7593
'$ sql =「SELECT * FROM services WHERE sowner LIKE CONCAT('%',?)」'。如果你最後需要通配符,交換'CONCAT'的參數。 –