解决见下文
我想检查一个字符串是否已经在我的mysql数据库中
function checkStatus($articlename)
{
$articlename = mysql_real_escape_string($articlename);
$query = "SELECT name FROM table WHERE name LIKE '$articlename' LIMIT 1";
echo $query;
$result = mysql_query($query);
if(mysql_fetch_array($result) !== false)
return true;
return false;
}
if (checkStatus($element[$i]) == true)
echo $element[$i];
element[$i] 没有打印,但是当我将回显的 $query 复制到 phpmyadmin 中时,我得到了一个结果。另外,当我只是回显 $element[$i] 并复制/粘贴该值时,可以说它的 Landskron Hell 到代码中以获取
$query = "SELECT name FROM table WHERE name LIKE 'Landskron Hell' LIMIT 1";
那么它也可以工作。所以打印的变量 $element[$i] 是字符串 ABC 但在我的代码中它不是。为了检查这个我试过
if ($element[$i] == 'Landskron Hell')
echo "It worked!"
即使 echo $element[$i] 显示 Landskron Hell,这也不起作用。
我真的很困惑,不胜感激!
TL:DR PHP 变量如何不等于它在回显/打印时显示的字符串?
编辑: var_dump($query)
给出string(64) "SELECT name FROM table WHERE name LIKE 'Landskron Hell' LIMIT 1"
,phpmyadmin 中的这个精确查询给出了 1 行的结果!
EDIT2:感谢andrewsi
我添加
$test = 'Landskron Hell';
var_dump($articlename);
var_dump($test);
表明:
string(15) "Landskron Hell" string(14) "Landskron Hell"
所以显然有区别!但它是什么???
EDIT3我使用转换了字符串strToHex
function strToHex($value, $prefix = '') {
$result = '';
$length = strlen($value);
for ( $n = 0; $n < $length; $n++ ) {
$result .= $prefix . sprintf('%02x', ord($value[$n]));
}
return $result;
}
结果是:
%4c%61%6e%64%73%6b%72%6f%6e%20%20%48%65%6c%6c
和
%4c%61%6e%64%73%6b%72%6f%6e%20%48%65%6c%6c
所以显然有2个空格?在我的元素中?但他们没有打印?
已解决!:我$articlename = preg_replace('/\s+/', ' ',$articlename);
感谢andrewsi
让我走上正轨!