MySql if语句不起作用

时间:2012-04-17 10:59:30

标签: php mysql

在我的“详细信息”表格中,当完整字段为“0”时,我希望在“1”时显示某个图像,我希望显示不同的图像。目前只显示第二张图片(当完整字段为1时) 这是我正在使用的代码:

$id = $_SESSION['user_id'];
    $isFinished= mysql_query("SELECT complete From details where user_id = $id") ?>
<p>  <img src='<?php if($isFinished) echo "correct.png"; else echo "incorrect.png"; ?>' /><a href="details.php">Details</p>

任何想法都会很棒!

6 个答案:

答案 0 :(得分:2)

您的查询的WHERE子句指定仅选择complete ='1'

的记录

所以你只会在结果中得到1

您应该完全从WHERE子句中删除它,并让您的php IF语句决定是否complete = '1'

答案 1 :(得分:1)

您的SQL语句仅选择complete ='1'的条目。 你应该从你的陈述中删除“and complete ='1'”。

Edite: 同样如上所述,if语句仅检查您的查询是否返回了某些内容或出现错误。

应该是

if($isFinished['complete'] == '1') {echo "correct.png";}else{echo "correcy.png";}

答案 2 :(得分:1)

功能

function getOne($query){
  $res = mysql_query($query);
  if (!$res) {
    trigger_error("db: ".mysql_error()." in ".$query);
    return FALSE;
  }
  if ($row = mysql_fetch_row($res)) {
    return $row[0];
  }
}

代码

$sql = "SELECT complete From details where user_id = ".intval($_SESSION['user_id']);
$isFinished = getOne($sql);
?>
<p>
  <img src='<?php if($isFinished): ?>correct.png<? else: ?>incorrect.png<? endif ?>' />
  <a href="details.php">Details</a>
</p>

答案 3 :(得分:0)

mysql_query函数仅在查询无效时才返回false。如果零行,则不返回false。

您应该使用mysql_num_rows函数来确定是否存在行,或者使用mysql_fetch_*函数来获取完成值。

示例1(与原始(未经编辑)的问题类似):

$result = mysql_query("SELECT 1 From details where user_id = $id where complete = 1");
$isFinished = mysql_num_rows($result);

示例2(替代方案):

$result = mysql_query("SELECT complete From details where user_id = $id");
$record = mysql_fetch_assoc($result);
$isFinished = $record['complete'];

答案 4 :(得分:0)

这是整个代码吗?

在这种情况下,$ isFinished不是从db中检索的内容:如果查询错误则mysql_query返回false,否则返回可以获取结果的对象。

在这种情况下,如果($ isFinished)始终为true,则查询正确!

你错过了fetch part ater query执行!

http://php.net/manual/en/function.mysql-query.php

例如:

 $id = $_SESSION['user_id'];
 $result = mysql_query("SELECT complete From details where user_id = $id");
 $isFinished= mysql_num_rows($result);
<p>  <img src='<?php if($isFinished) echo "correct.png"; else echo "incorrect.png"; ?>'     /><a href="details.php">Details</p>

这样,如果查询返回一行或多行,则$ isFinished为1或更多,否则$ isFinished为0.您的if - else应该正常工作

注意我没有更改原始SQL,如果需要,请更改它。

答案 5 :(得分:0)

它应该是这样的:

$id = $_SESSION['user_id'];
$result= mysql_query("SELECT complete From details where user_id = $id  and complete='1'") ?> 
$row = mysql_fetch_array( $result );
<p>
<?php if($row['complete']): ?>
<img src="correct.png"/>
<?php else: ?>
<img src="incorrect.png"/>
<?php endif; ?>
<a href="details.php">
Details</a>
</p>