PHP变量不等于代码中的字符串,但打印时为字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP变量不等于代码中的字符串,但打印时为字符串相关的知识,希望对你有一定的参考价值。

已解决,请参见下文

我想检查我的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谁使我走上了正轨!

已解决,请参阅下面的清单,我要检查我的mysql数据库函数中是否已经有一个字符串checkStatus($ articlename){$ articlename = mysql_real_escape_string($ articlename); $ query =“ SELECT ...

答案

这是一个很好的函数,如果不存在,则返回false,如果不存在,则返回值。

// For a simple query that should return a single value, this returns just that value (or FALSE) so you can process it immediately 
function db_result_single($result)
{ 
    return ($row = mysql_fetch_row($result)) && isset($row[0]) ? $row[0] : false; 
}
另一答案

我注意到类似的问题。当我从mysql数据库中获得一个值,并将其与另一个具有相同字符和值的字符串进行比较时,它表明它们是两个不同的字符串。我不明白为什么。

以上是关于PHP变量不等于代码中的字符串,但打印时为字符串的主要内容,如果未能解决你的问题,请参考以下文章

在比较 XSLT <xsl:if> 中的字符串时,如何指定“不等于”?

PHP

值在函数中正确打印,但返回时为 None

gettext中的php字符串变量

使用或 || if 语句中的运算符以评估变量(不等于两(2)个字符串)

PHP输出打印方法