我在尝试使用PHP从MySQL数据库中获取一些数据时遇到了一个奇怪的问题。不确定它是否重要,但数据库,连接和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 Workbench运行它,它会返回1条记录(正确的)。我怀疑它是&符号(&),因为将查询更改为其他存在的工作正常。
我试过逃避&用斜线:
$testcode = str_replace("&","\&",$testcode);
我尝试过使用单引号和双引号组合,但我尝试的所有内容都会产生相同的结果
我在PHP中做错了什么?为什么Workbench工具在使用相同的查询时工作正常?
答案 0 :(得分:1)
我解决了! 我在sql查询前添加了这个:
$testcode = str_replace("&","&",$testcode);
感谢大家的帮助