2014-06-07 47 views
0

$content是一個帶有'詳細描述'的變量。 product_id是可能包含在一個MySQL表的詳細說明($content)的一個子列名爲productsPHP&MySQL SELECT子字符串

我想創建一個select語句如果product_id$content變量包含將找到的記錄。然後我想更新名爲receive_smsurl字段從SELECT staement 研究的網站,我想出了下面的其它表....但它不工作

$mysqlic = mysqli_connect("testsms.cloudaccess.net", "username", "password", "testsms2"); 
$prod_res=mysqli_query($mysqlic,"SELECT url from products 
           WHERE %product_id% LIKE %$content%"); 
mysqli_query($mysqlic,"INSERT INTO recieve_sms (comments) VALUES ('$prod_res')"); 

任何想法?

回答

0

它應該是:

$prod_res = mysqli_query($mysqlic, "SELECT url from products 
            WHERE '$content' LIKE CONCAT('%', product_id, '%')"); 

或:

$prod_res = mysqli_query($mysqlic, "SELECT url from products 
            WHERE LOCATE(product_id, '$content') != 0"); 

你需要把$content引號。

實際上,如果您使用了準備好的查詢,那麼'$content'將成爲佔位符?

您查詢後,你需要調用mysqli_fetch_assoc()得到列值:

$row = mysqli_fetch_assoc($prod_res); 
$url = $row['url']; 
+0

Thankyou Barmar。 – user3718273

+0

不幸,它仍然不起作用。在對這個網站做了更多的研究之後,它可能是我分配給SELECT語句的變量。我應該使用SET命令來分配$ prod_res變量嗎? – user3718273

+0

'mysqli_query()'不會返回'SELECT'中列的值。您必須調用獲取函數,然後從中獲取值。看到我更新的答案。 – Barmar

0

那麼,首先,我不明白你爲什麼使用通配符字段名稱。要檢查是否值包含該字段的值內,考慮改變這樣的:

... WHERE %product_id% LIKE %$content%); 

... WHERE product_id LIKE '%$content%'); 

另外,請用準備好的語句,以避免SQL注入。你正在使用支持它們的MySQLi。

編輯

此外,mysqli_query的回報是MySQLi的資源。您必須從資源中獲取結果才能訪問您要查找的值。

+0

感謝西蒙。非常有效的一點。我怎麼不使用mysqli。我是新來的PHP和MySQL。大部分學到的東西都是通過查看論壇上的其他代碼 – user3718273

+0

您需要在'%$ content%''周圍引用引號。但這與問題所要求的相反。這將找到'product_id'中包含'$ content'的記錄,他說_product_id包含在$ content_中。 – Barmar