2012-03-18 126 views
1

我正在運行一個非常簡單的查詢,我認爲它應該可以工作。我之前沒做過的唯一事情是在查詢的WHERE子句中放置一個php變量。變量$ X是一個數值,比方說100。當我運行這個查詢時,我得到的返回值爲0。我做的事顯然很愚蠢嗎?在mysql查詢的WHERE子句中使用php變量

SELECT generator_64k.n 
FROM generator_64k 
WHERE generator_64k.n<= '$X' 

我看各地的網絡,也試過這樣:

SELECT generator_64k.n 
FROM generator_64k 
WHERE generator_64k.n<= '" . $X . "' 

但是,這也只是返回0

任何想法?提前致謝。

+1

你可以請張貼PHP代碼嗎?在PHP中,MySQL查詢只是通過套接字發送給MySQL的字符串。如果沒有構造字符串的PHP代碼(您的查詢),我們無法幫助您。 – Basti 2012-03-18 17:45:36

+0

MySQL查詢中變量的[PHP(int))可能重複。安全?](http://stackoverflow.com/questions/8068234/php-int-for-variables-in-mysql-query-secure) – ChrisF 2013-03-05 19:09:28

回答

1

試試這個,或者發佈你的PHP代碼。

<?php 
$X = 100; 
$query = "SELECT n FROM generator_64k WHERE n <= $X"; 
$result = mysql_query($query); 
if (!$result) { 
    echo ('Query error: ' . mysql_error()); 
} 
2
$query = "SELECT generator_64k.n FROM generator_64k WHERE generator_64k.n<= {$X};"; 
+0

不幸的是,這會返回一個錯誤:你的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,在第1行 – user1262890 2012-03-20 02:32:10

+0

@ user1262890編輯該帖子的''附近使用正確的語法。我也錯過了SQL語法中的分號。從'{$ X}「;'改爲'{$ X};」;' – hjpotter92 2012-03-20 04:56:45

-2

您的數值不能有'。 MySQL會將它視爲字符串。

你應該這樣做,而不是

" WHERE number <= " . (int)$val . " .. " 

// or (but not recommended due to security problem) 
" WHERE number <= $val " 
+0

不,MySQL不關心你是否將整數作爲'5''傳遞。它將在使用前簡單地轉換。做你的研究! – Basti 2012-03-18 17:59:24

+0

php不需要鑄造變量 – dAm2K 2012-03-18 19:20:16

+0

鑄造'(int)$ val'是毫無意義的,因爲你的整數''val'由於'string'連接而被立即轉換回'string'。 MySQL不會知道PHP變量的類型。你只需將查詢作爲字符串傳遞給mysql。 – Basti 2012-03-18 20:14:47

0

php和使用變量的E.g $查詢= 「從表1中選擇*其中COL1 < =」 $ MYVARIABLE。

$ result = mysql_query($ query);

0

mysql_query()函數對錯誤返回false(false == 0),否則返回一個資源。 mysql_query不返回結果集中的值。您必須使用mysql_fetch_assoc或類似的東西來獲取結果集中的行。

此外,請確保您將查詢封裝在雙引號中,以便PHP可以擴展變量$X

使用mysql_error從上次調用mysql_query獲取錯誤。

0

使它像這樣

$sql="select `username` from `users` where id='$newid';"; 
mysql_query($sql); 

這裏$ NEWID是int值。 用戶名前後使用的符號,要得到這個,你必須按esc鍵下方的鍵。