Mysqli选择查询。 Affected_rows不会将单词与空格进行比较

时间:2018-03-17 15:30:49

标签: php mysql select mysqli whitespace

$nick = trim('Your Nightmare');

    $q = connect_db();

    //sprawdzam czy w bazie juz istnieje taki gracz
    $conn = $q->prepare("SELECT name FROM players WHERE name = ?");
    $conn ->bind_param("s", $nick);
    $conn ->execute();
    $conn ->bind_result($db_nick);
    $conn ->store_result();

    if($conn ->affected_rows === 0)
    {
            echo 'inserted~!<br/>';
    }
    else
    {
        echo 'player already exists!';
    }

    $conn ->free_result();
    $conn ->close();
    $q->close();

因此,如果玩家名称是“Your Nightmare”,并且在数据库中有玩家名称“Your Nightmare”,则代码可以正常工作。 但如果玩家名称是“你的太空空间梦魇”(注意更多的空间(这就是我使用修剪的原因))并且在数据库中有“你的梦魇”。 看起来affected_rows或num_rows不适用于空格。请帮忙! :( enter image description here

1 个答案:

答案 0 :(得分:1)

您正在使用等于(=)运算符,这意味着数据必须完全匹配, trim 函数仅从字符串的开头和结尾删除空格。要删除单词之间的空格,您必须使用类似 preg_replace 的内容,它允许您替换字符串上的模式并替换新值,在您的情况下,您可以用一个替换多个空格,如下所示:

$result = preg_replace('/\s{2,}/i',' ','Your  Nightmare');

这将允许您“标准化”收到的信息。在http://php.net/manual/en/function.preg-replace.php了解有关 preg_replace 的更多信息。