代码之家  ›  专栏  ›  技术社区  ›  waqmaz

Mysqli选择查询。受影响的\u行不将单词与空格进行比较

  •  -1
  • waqmaz  · 技术社区  · 6 年前
    $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();
    

    所以,如果玩家名称是“你的噩梦”,并且数据库中有玩家名称“你的噩梦”,那么代码工作正常。 但若玩家的名字是“你们的空间噩梦”(注意更多的空间(这就是我使用trim的原因)),而数据库中有“你们的噩梦”。 看起来受影响的\u行或num\u行不适用于空格。请帮忙!:( enter image description here

    1 回复  |  直到 6 年前
        1
  •  1
  •   Jonnathan Q Sean Hamilton    6 年前

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

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

    这将允许您“规范化”接收到的信息。了解更多信息 preg\U更换 http://php.net/manual/en/function.preg-replace.php