2009-09-06 56 views
1

驗證似乎因某種原因失敗。通過驗證,我的意思是「if ($result)」 - 部分。我如何正確驗證SQL查詢?使用PHP驗證SQL查詢

$dbconn = pg_connect("host=localhost port=5432 dbname=heoa user=heoa password=123"); 
$email = $_POST['login']['email']; 

$result = pg_query_params($dbconn, 
       'SELECT user_id 
       FROM users 
       WHERE email = $1', 
       array($email) 
       ); 
if ($result) 
{ 
     while ($row = pg_fetch_array($result)) 
     { 
       $user_id = $row['user_id']; 
     } 
     return $user_id; 
} 

回答

2

我懷疑返回值是整數零,這也是在if語句中作爲錯誤interprested。通過做「if($ result!== FALSE)」(請注意,它應該是!和而不是!=)您將驗證結果是否真的不同於FALSE而不僅僅是假...

+0

這不可能是正確的,因爲根據文檔,'pg_query_params'返回成功的_A查詢結果資源或failure_上的FALSE。這段代碼是正確的,但它應該調用'pg_last_error()'來知道爲什麼數據庫在該查詢中失敗。 – 2014-11-21 15:57:25

0

如果您在SQL查詢中添加apostraphe的大約$ 1,如?

SELECT user_id 
FROM users 
WHERE email = '$1' 

我不確定PHP如何擴展$ 1變量。

+0

(a)PHP不會在單引號字符串中擴展變量。 (b)使用'$ 1'參數是'pg' API中的正確用法。 (c)不要將查詢參數放在引號中,因爲它們將被解釋爲SQL表達式中的文字字符串,而不是參數。 – 2009-09-06 19:30:11

+0

謝謝,我不確定。我至少五年沒有編寫PHP頁面,所以如果你有了我的要點,鐵鏽就會變得很厚 – 2009-09-06 22:26:28