返回带有&符号的字段

时间:2016-02-16 20:49:34

标签: php mysql

我在尝试使用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工具在使用相同的查询时工作正常?

1 个答案:

答案 0 :(得分:1)

我解决了! 我在sql查询前添加了这个:

$testcode = str_replace("&","&",$testcode);

感谢大家的帮助