【问题标题】:count member number in table not allowed to be more than one统计表中的成员数不允许超过一个
【发布时间】:2015-10-07 23:10:20
【问题描述】:

这应该是一个相对简单的编码过程,但由于某种原因,我无法让它工作。

我想做什么

会员参加比赛,您只能参加一次。为了阻止成员多次输入,我使用以下代码

//Check If user allready entered comp
$sql="SELECT member_nr, count(member_nr) as entered FROM competition WHERE member_nr ='$memNr' and competition = '$comp'";
$result = mysql_query( $sql ) or trigger_error( mysql_error() . " in " . $sql );

while($row = mysql_fetch_array($result)){
    $isEntered = $row['entered'];   
}//end while`

if($isEntered >1  ){
?>
    <h1>You have allready entered</h1>
<?
}//end check if entered allready

我的问题

我收到错误通知:Undefined offset: 1

我无法弄清楚为什么会这样,我猜我的 sql 查询不正确...任何建议将不胜感激

【问题讨论】:

  • 1 > 1 的计算结果为false。您可能需要尝试if($isEntered &gt; 0){

标签: php mysql sql mysqli


【解决方案1】:

您只获取一列和一个字段,那么为什么要在循环中使用它。

只需使用它,

$sql="SELECT member_nr, count(member_nr) as entered 
      FROM competition 
      WHERE member_nr ='$memNr' and competition = '$comp' LIMIT 1";
$result = mysql_query( $sql ) or trigger_error( mysql_error() . " in " . $sql );

$isEntered = mysql_result($result,0);
if($isEntered > 1) echo "<h1>You have allready entered</h1>";

另外一点是,mysql 函数已被弃用。最好使用mysqli_PDO

阅读: Why shouldn't I use mysql_* functions in PHP?

【讨论】:

  • 谢谢您,先生,请问您为什么在mysql_result($result,0)中输入0(零)
  • 由于您只想检索一列一行,mysql_result($result,0); 其中0 是第一列。
【解决方案2】:

您的 SQL 查询是正确的。但是,您需要在脚本开头的某处将变量 $isEntered 初始化为 0,因为如果在您的表中根本找不到成员 ID,它将是未定义的。

还有……

...您不应再使用mysql_.. 函数。它们已被弃用。请改用mysqli_...PDO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    相关资源
    最近更新 更多