SQL:双重 if 语句/数据库查询问题

Posted

技术标签:

【中文标题】SQL:双重 if 语句/数据库查询问题【英文标题】:SQL: Double if statement/database query issue 【发布时间】:2014-02-03 21:08:04 【问题描述】:

我对 SQL 和 php 编码有点新手,但我正在尝试执行以下操作:

为了防止登录用户两次参加比赛,我将他们的用户 ID 和比赛 ID (comp) 记录到名为 competitions 的 SQL 表中.当用户加载页面时,我希望能够查询数据库以检查此用户 ID 之前是否已进入特定比赛。如果有,则显示页面的一个版本,如果没有,则显示第二个版本。

基本上,我正在查看 userid==x AND comp==y 是否在表格的给定行中。

这是我目前得到的代码,但它似乎不起作用。

$result = databaseSelect("select id, userid, comp from competitions where userid=" . $_SESSION['user']);

 if (count($result) > 0) 
 $r2 = ("select" . $result['id'] . " from" . $result . " where" . $result['comp'] . " == " . $compid);
 if (count($r2) > 0) 
 echo "<p>No competitions</p>";
 
 else

 echo "<p>Competition...</p>";
 

【问题讨论】:

首先尝试在" where" 语句中添加一些填充。 Hardy:你能举一个你所说的填充的例子吗? 他的意思是在 'from' 和 'where' 之后添加一个空格,这样您的查询就不会看起来像“从某个地方选择一些东西 wheresomevalue == 2” 我现在的代码可以正常工作了,因为它实际上在页面上显示了一些东西。然而,即使$compid 是一个没有用户输入的完全唯一的数字,它仍然会表现得好像$r2 中有一个大于0 的值。当echoing $r2 时,我会显示:select fromArray where = 3 然后是另一件事;您的 databaseSelect 查询到底返回了什么?资源?数组?您的第二个...“查询”存在上述问题。另外,你实际上并没有用它做任何事情。您只需定义一个字符串(查询),然后计算该字符串中的字符数。由于该字符串中有 > 0 个字符,因此您将始终看到“No Competitions”...如果您真的想要一个答案,您也应该运行该查询。 【参考方案1】:

您可以查看用户是否参加了 ID 为 $comp_id 的给定比赛。如果有结果,则表示用户已经参加了比赛。

$result = databaseSelect("select id, userid, comp from competitions where userid=" . $_SESSION['user'] . " AND comp=" . $comp_id );

if (count($result) > 0) 
    echo "You have already entered this competition";
 
else 
    echo "This is the competition...";

【讨论】:

太好了,谢谢。这样可行!认为我之前尝试过,但缺少 AND 周围的填充,或类似的东西,所以它不起作用【参考方案2】:

试试这个查询:

//This will return a row if $_SESSION['user'] already has a competition with $compid 
$result = databaseSelect("select id, userid, comp from competitions where userid=" . $_SESSION['user'] ." AND comp = ". $compid);
if (count($result) > 0) 
  // user already partecipates to the competition 

else
  //ok, you can partecipate

【讨论】:

以上是关于SQL:双重 if 语句/数据库查询问题的主要内容,如果未能解决你的问题,请参考以下文章

SQL查询从双重返回N行

sql中where 之后怎么加if条件判断

在excel中用SQL语句查询时选取所有字段时可以提取,选部分字段时出现查询无法运行或数据库表无法打开。

怎样用SQL语句查询以20%来分段查询数据,如查询该表中数据数量20%到40%的数据怎查来。

如果表不存在,如何运行包含针对另一个 sql 实例上的表的查询的 If-Then-Else 语句?

SQL多个条件查询语句