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 的值。当echo
ing $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 语句/数据库查询问题的主要内容,如果未能解决你的问题,请参考以下文章
在excel中用SQL语句查询时选取所有字段时可以提取,选部分字段时出现查询无法运行或数据库表无法打开。
怎样用SQL语句查询以20%来分段查询数据,如查询该表中数据数量20%到40%的数据怎查来。