0
我在嘗試從PHP數據庫中獲取某些數據時遇到了一個奇怪的問題。不知道它是否重要,但編碼數據庫,連接和PHP文件都是UTF-8。我的繼承人代碼:使用&符號返回一個字段
$testcode = "Unique12345 & TestName";
$sql="
Select
dw_test.testID,
dw_test.testText
From
dw_test
Where
dw_test.testCode = '".$testcode."'
";
if(!$qry = mysqli_query($link, $sql)) reporterror(mysqli_error($link), $sql, $_SERVER['SCRIPT_URL'], __FILE__, __LINE__);
if(mysqli_num_rows($qry)>0){
$test_array = mysqli_fetch_assoc($qry);
$resultTest = $test_array['testID'];
$testText = $test_array['testText'];
}else{
echo "Nothing found";
}
如果我運行使用PHP,它會說「沒有發現」,但如果我運行它使用的是Windows的MySQL工作臺,則返回1條記錄(正確的)。我懷疑它是&符號(&),因爲將查詢改爲其他存在的工作正常。
我試圖逃避&以斜線:
$testcode = str_replace("&","\&",$testcode);
,我曾嘗試與單和雙引號組合打轉轉,但一切我嘗試產生相同的結果
我在做什麼在我的PHP錯誤?在使用相同查詢時,工作臺工具如何正常工作?
1.使用'mysqli_real_escape_string()'在$ testcode。 2.考慮儘快切換到PDO而不是mysql。 3.「reporterror()」實際上做了什麼? –
reporterror是一個自定義函數,如果發生錯誤,它會通過電子郵件發送給我。 $ testcode作爲循環的一部分通過mysqli_real_escape_string()傳遞,爲簡單起見,我省略了它。該代碼片段適用於$ testcode的其他值,只有當遇到&符號時纔會停止工作。 – kurdtpage
所以你確定你的'mysqli_query()'不會拋出任何錯誤?另外,在你創建腳本後,立即嘗試'echo $ sql',然後在Workbench中嘗試它。 –