2013-07-19 156 views
0

嗨我得到一些用戶的表單錯誤:'where子句'中的未知列'c63rd321'它適用於一個用戶,但它不適用於所有其他用戶的任何想法?'where子句'中的未知列'c63rd321'

$query = 'SELECT first_name,last_name,is_admin FROM '.$database.'.users WHERE users.id='.$user_id.' LIMIT 1'; 

做我需要添加到users.id =「」爲什麼它的一個用戶,而不是工作,換了別人

+1

你已經做過'$ database'或'$ user_id'的任何處理嗎? – Spudley

+0

沒有通過調用$ _SESSION ['']設置變量 – Astronaut

回答

5

貌似$user_id是一個字符串("c63fb321"),而不是一個整數。使用引號(和逃!)

$query = 'SELECT first_name,last_name,is_admin FROM '.$database.'.users WHERE users.id="'.mysql_real_escape_string($user_id).'" LIMIT 1'; 

假設mysql_功能在這裏,但是這也適用於PDO與mysqli的以及

+0

虐待嘗試。謝謝 – Astronaut

+0

用戶ID確實是一個字符串,並有一個短劃線「 - 」字符, – Astronaut

1

請更換此:

$query = 'SELECT first_name,last_name,is_admin FROM '.$database.'.users WHERE users.id='.$user_id.' LIMIT 1'; 

.. 。with:

$query = 'SELECT first_name,last_name,is_admin FROM '.$database.'.users WHERE users.id=:user_id LIMIT 1'; 
                         ^^^^^^^^ 

...並添加user_id來準備語句參數。如果您的圖書館不支持準備好的陳述,請隨時索取更多詳細信息,但您應該考慮改用更好的圖書館。

+0

User_id來自$ _SESSION ['user'] – Astronaut

+0

@丹 - 我不明白你的問題。 –

0

您的user_id是否始終爲整數?如果是這樣,你不需要添加引號。但形成你的問題,我可以猜測,它可以是字符串。您可以使用mysql_real_escape_string()作爲快速測量(http://php.net/manual/en/function.mysql-real-escape-string.php)。

但是,正如你可能從以前的答案中知道的那樣,如果你用mysqli或PDO重寫它會好得多。但它應該是複雜的,也許需要一些時間。

+0

我剛剛去了數據庫,確實問題是其中一個用戶有ID整數,所有其他用戶有一個字符串有ID。 – Astronaut