PHP:空间问题

时间:2010-11-05 20:21:34

标签: php

(提出了一个新问题,而不是在我的另一个问题中有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);

 } 

5 个答案:

答案 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 === '')更优雅。