【问题标题】:How to compare MySQL int value within the query without fetching it如何在查询中比较 MySQL int 值而不获取它
【发布时间】:2017-01-23 20:50:12
【问题描述】:

最后我放弃了,因为我尝试了很多对我不起作用的例子...... 基本上我想查询如下数据库。

    $main_query=$con->query("SELECT USERID FROM SUPERDATATABLE WHERE USERID=$_SESSION[USERID] AND scores>50")or die('Oops, Failed 2 work!');

    if(mysqli_num_rows($main_query)>0){
    echo 'it worked';
    }else{
           echo 'sorry, i cant';
         }

现在我明确设置了大于 100 的分数,所以我知道它应该响应 它有效 而不是 抱歉,我不能。 我开始了会话,当我回显会话 ($_SESSION['USERID']) 时,我看到它已设置且不为空,但 M​​ySQL 可能不支持此语句。

谁来帮帮我

【问题讨论】:

  • $looper 设置在哪里?
  • 看起来$looper 应该是$main_query,反之亦然。
  • 如果你只是想知道数据是否存在,而不需要获取结果,我建议使用SELECT COUNT(*)而不是SELECT USERID。这样一来,只返回一行,而不是浪费时间发回大量结果以获取计数。
  • 您对 SQL 注入持开放态度。查看准备好的语句和绑定参数。它将解决您的查询中可能出现的任何引用问题。

标签: php mysql session


【解决方案1】:

是的,当然你可以像这样查询数据库,但是你不能像这样在双引号内使用数组。应该是"${_SESSION['USERID']}"

【讨论】:

  • 大括号位于美元符号的另一侧。
  • 除了SQL注入的角度,他们的做法并没有什么问题。在不带括号的双引号字符串中使用数组键时,应该不加引号,并且在许多情况下,包括这种情况,不需要复杂的语法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-04
  • 2014-01-12
  • 1970-01-01
相关资源
最近更新 更多