2016-12-07 101 views
0

我有一個從MySQL表中選擇的php腳本。表格內容被設置爲UTF8,所以php腳本也與它相連接。MYSQL不返回某些結果

輸入字符串是real_escaped。我現在面臨的以下問題: 鑑於表中的以下數據:

  • ID用戶名
  • 1測試
  • 2 Test1的
  • 3測試-A

以下SQL返回1和2的ID爲成功,但當詢問第3個它返回沒什麼。

SELECT `ID` FROM `User` WHERE `Username` = '$User' 

爲什麼不是我索要ID其中用戶名= 測試-A回來? 是否因爲用戶名包含減號?

+2

我會謹慎對待mysql注入。查看準備好的陳述。 –

+0

這也解決了我的問題與第三個測試用例嗎? – CMA

+0

不,查詢不會因爲字符串中有 - 而受到影響。 –

回答

0

它必須是不同的字符串。在這兩種情況下仔細檢查破折號/連字符(可能是不同的Unicode字符,如here) - 複製和粘貼來自「豐富」文本編輯器的數據時,會頻繁發生。 同時檢查空格。

0

根據「real_escaped」的含義,可能會出現這樣的情況,即您的用戶名被轉義爲類似於('Test \ -A')的東西,而這種東西本質上並不存在。

打印出$ User的值以檢查您發送給MySQL的內容。

最重要的是,您使用的是舊的過時的做法,有更好的方法安全地使用PDO :: prepare(http://us1.php.net/manual/en/pdo.prepare.php)查詢數據庫,並在那裏使用這些示例。