簡體   English   中英

難道PHP的MySQL不支持?

[英]Does PHP MySQL not support IN?

好的,我有一個相當長的查詢,只有在添加一個IN語句時才會失敗。 以下查詢可直接在MySQL控制台中很好地工作,但在PHP中完成時不返回任何內容。

$db = mysql_connect('localhost', 'something', 'somepassword');

$query = "SELECT * 
FROM alt_table f 
INNER JOIN alt_fac_table_c cl ON (f.id = cl.alt_table2_ida) 
INNER JOIN alt_table c ON (cl.alt_table_idb = c.id) 
LEFT OUTER JOIN alt_table_contacts_c con ON (f.id = con.alt_table_ida) 
LEFT OUTER JOIN contacts cc ON (con.alt_table_idb = cc.id) 
WHERE c.name = 'myname' 
AND f.state IN ('AL','FL') ORDER BY fname;";

$result = mysql_query($query);

問題不在於連接數據庫,也不在於查詢本身。 顯然我已經重命名了幾件事,但是查詢是相同的。 在PHP中,它什么也不返回(沒有錯誤,什么都沒有),但是在SSH /控制台中,它返回我需要的所有行。

如果我刪除“ AND f.state IN('AL','FL')ORDER BY fname;“;”,該查詢有效,但為我提供了每個狀態。因此,最大的問題是……PHP是否存在問題? IN語句?

UPDATE FIX最終導致發布數據出現問題。 我在發布'AL',FL'的單引號。 顯然,在發布時對它們進行了奇怪的編碼。 我假設某種安全功能。 我從帖子中刪除了報價,而是將其添加到服務器端PHp,並且可以正常工作。

您忽略了選擇數據庫...

mysql_select_db('database_name', $db);

這應該在調用mysql_connect()函數之后執行。

http://uk.php.net/mysql_select_db

它將在成功時提供對錯信息,因此您可以使用以下內容確保連接成功。

if( ! mysql_select_db('database_name', $db) ) {
    die('failed to select database');
}

除上述內容外,您還可以修改以下行

$result = mysql_query($query);

如下所示。 這將向您顯示返回的任何錯誤,並且在您的情況下顯示No database selected錯誤

$result = mysql_query($query) or die(mysql_error());

http://php.net/manual/en/function.mysql-query.php

The query string should not end with a semicolon.

嘗試刪除它,看看是否可行。

最終導致發布數據出現問題。 我在發布'AL',FL'的單引號。 顯然,在發布時對它們進行了奇怪的編碼。 我假設某種安全功能。 我從帖子中刪除了報價,而是將其添加到服務器端PHp,並且可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM