使用if elseif else列出名称

时间:2015-01-03 00:16:32

标签: php mysql sql

我试图列出除了身份证号码36以外的名字。这就是我所拥有的,但它无法正常工作。有人可以帮忙吗?

$sql = "SELECT `ls_names`.`id` , `ls_names`.`name` FROM `thedb`.`ls_names` ";  
$names = mysql_query($sql);
if(count($names) > 0)
    $row_count = count($names);
elseif ($names . $id = 36)
    echo '';
else
    $row_count = 1;

4 个答案:

答案 0 :(得分:1)

看看这一点:elseif ($names . $id = 36)

你没有在这条线上进行比较,你正在做一项任务。将其更改为:

elseif ($names . $id == 36)

此外,$names变量只是查询的结果,因为连接$id的资源并没有达到预期效果。

答案 1 :(得分:0)

仅获取除id 36之外的数据,然后在sql查询中使用Where子句,然后显示

$sql = "SELECT `ls_names`.`id` , `ls_names`.`name` FROM `thedb`.`ls_names` Where `ls_names`.`id` NOT IN (36)";  

答案 2 :(得分:0)

$names设置为mysql_query的结果。来自http://php.net/manual/en/function.mysql-query.php

  

对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他语句返回   resultset,mysql_query()在成功时返回资源,或者返回FALSE   错误。

另一方面,

count()需要Countable - 是一个可数的mysql资源吗?您是否应该使用mysql_num_rows来计算响应中的行数?

$names$id(您不明确的定义)连接起来的方式是一个有效的字符串?

我认为如果你完成if陈述,你就会意识到它的病态。想一想:

if( number_of_rows > 0 )
  $row_count = number_of_rows
elsif result_set . $id == 36 
  echo '' 
else
  row_count = 1 

据我所知,这并没有达到任何明显的效果。

最后,正如另一个答案所示,如果您想要数据库的过滤结果,让数据库过滤结果,请不要在PHP中进行过滤。数据库非常擅长这种事情。将此代码移动到PHP中是一种常见的反模式。

答案 3 :(得分:0)

执行查询并检索结果分两个步骤完成。您向我们展示的代码与您描述的问题不符:

"我试图列出除了ID 36和#34;

之外的名字

然后尝试:

$sql = "SELECT `ls_names`.`id` , `ls_names`.`name`"
     ." FROM `thedb`.`ls_names` ";  
$result = mysql_query($sql);
while ($row=mysql_fetch_assoc($result)) {
   if (36!=$row['id']) {
      echo $row['name'] . ",";
   }
}

但是从数据库中检索数据后过滤数据是不好的做法。如果您不需要这些数据,请不要这样做。拿它:

 SELECT id, name FROM thedb.ls_names WHERE id <> 36