(提出了一个新问题,而不是在我的另一个问题中有2个“问题”)
我正在为我的用户制作PM系统。
在收件人字段中输入全名。当你提交我想确保它是他发送给他们的合适用户。
我有空间问题。如果我只在收件人字段中输入一个空格,它将在表格中返回我的“你是谁的意思?”里面的所有用户名。我如何防止这种情况,并且不将查询运行为空或仅包含空格? (一个很好的方式)
这是我的代码:
$mot = mysql_real_escape_string($_POST['mottagare']);
list($firstname, $lastname) = array_map('ucfirst', explode(' ', $mot, 2));
$qur = mysql_query("
SELECT id, firstname, lastname,
(firstname = '$firstname' AND lastname = '$lastname') AS full FROM users
WHERE (firstname = '$firstname' AND lastname='$lastname')
OR (firstname LIKE '$firstname%' AND lastname LIKE '$lastname%')
OR firstname LIKE '$firstname%' OR lastname LIKE '$firstname%'
ORDER BY (firstname = '$firstname' AND lastname='$lastname') DESC");
if(mysql_num_rows($qur) == 1){
$get = mysql_fetch_array($qur);
if($get["full"] == 1){
echo $get["id"];
}else{
echo "Did you mean: ".$get["firstname"]." ".$get["lastname"]." ?";
}
}elseif(mysql_num_rows($qur) > 1){
while($get = mysql_fetch_array($qur)) {
$name[] = $get["firstname"]." ".$get["lastname"];
}
if(count($name) > 1) {
echo 'Who did you mean?<br>';
} else {
echo 'Did you mean: ';
}
echo implode('<br>', $name);
}
答案 0 :(得分:2)
在脚本的第一行之后添加如下内容:
$mot = trim($mot);
if(strlen($mot) < 1)
return;
trim
将删除所有前导和尾随空格,下一行检查是否没有输入,如果是,则返回。
答案 1 :(得分:1)
使用trim功能去除所有空格,然后检查字符串的长度,如果它没有至少一个字符,则不要执行搜索。
if (strlen(trim($name)) > 0) {
// perform search here
}
答案 2 :(得分:0)
在进行查询之前,只需检查$firstname
是否为''
。
答案 3 :(得分:0)
如果anything LIKE '$firstname%'
为空,请不要将trim($firstname)
放入SQL查询中。
答案 4 :(得分:0)
您首先可以使用trim()函数删除所有空格。
在执行此操作后,您可以查看字符串是否为空,并使用empty()函数检查变量为NULL或空字符串('')。
至少它比放置if ($string === '')
更优雅。