列出名称,如果其他


Listing names with if elseif else

我正在尝试列出除id 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;

看看这个位: elseif ($names . $id = 36)

不是在这条线上做比较,你是在做作业。 将其更改为:

elseif ($names . $id == 36)

此外,$names变量只是查询的结果,因此由于它是资源连接$id因此不会执行预期操作。

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

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

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

对于选择、显示、描述、解释和其他返回的语句 结果集,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 中是一种常见的反模式。

执行查询和检索结果分 2 个单独的步骤完成。您向我们展示的代码与您描述的问题不匹配:

"我正在尝试列出除 id 36 之外的名称"

然后尝试:

$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