【问题标题】:SQL: Double if statement/database query issueSQL:双重 if 语句/数据库查询问题
【发布时间】: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”...如果您真的想要一个答案,您也应该运行该查询。

标签: php mysql sql


【解决方案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
}

【讨论】:

    猜你喜欢
    • 2014-02-11
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2018-08-05
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    相关资源
    最近更新 更多