$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不适用于空格。请帮忙! :(
答案 0 :(得分:1)
您正在使用等于(=)运算符,这意味着数据必须完全匹配, trim 函数仅从字符串的开头和结尾删除空格。要删除单词之间的空格,您必须使用类似 preg_replace 的内容,它允许您替换字符串上的模式并替换新值,在您的情况下,您可以用一个替换多个空格,如下所示:
$result = preg_replace('/\s{2,}/i',' ','Your Nightmare');
这将允许您“标准化”收到的信息。在http://php.net/manual/en/function.preg-replace.php了解有关 preg_replace 的更多信息。