【问题标题】:MySQL SELECT statement won't accept two php variablesMySQL SELECT 语句不接受两个 php 变量
【发布时间】:2015-02-27 08:54:01
【问题描述】:
<?php
    function searchDatabase($key, $value)
    {
        $key = $key;
        $query = "SELECT * FROM user_data WHERE username='$value'";
        $result = mysqli_query(loadDatabase(), $query);
        $numRows = mysqli_num_rows($result);
        if ($numRows > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
?>

所以我使用此代码搜索我的数据库以显示 key/value 对上的匹配项,但 $key 在传递到查询功能。如果我用单词用户名替换它,它匹配得很好。是类型问题吗?我没有明确说明它的类型,所以我可以搜索具有相同功能的其他列。

username: varchar(40)

【问题讨论】:

  • 呃? $key = $key; 一定是搞错了?将username 替换为$key
  • $query = "SELECT * FROM user_data WHERE username='$value'"; 应该是$query = "SELECT * FROM user_data WHERE username='".$value."'";
  • 您的代码易受攻击。不要在没有 real-escape-string 的情况下使用 mysqli,因为您的网站会被 SQL 注入攻击。

标签: php mysql database variables select


【解决方案1】:
<?php
function searchDatabase($key, $value)
    {
        $query = "SELECT * FROM user_data WHERE ".$key." = '".$value."'";
        $result = mysqli_query(loadDatabase(), $query);
        $numRows = mysqli_num_rows($result);
        return ($numRows > 0);
    }
?>

【讨论】:

  • 非常感谢!这对我有用!那么究竟发生了什么?是类型问题吗?
  • 你使用了用户名而不是 $key。
【解决方案2】:

试试这个

$query = "SELECT * FROM user_data WHERE ".$key."='$value'";

【讨论】:

    【解决方案3】:

    像这样:

    function searchDatabase($key, $value)
    {
      $query = "SELECT * FROM user_data WHERE $key='$value'";
      $result = mysqli_query(loadDatabase(), $query);
      $numRows = mysqli_num_rows($result);
      return ($numRows > 0);
    }
    

    【讨论】:

      【解决方案4】:

      问题出在查询中。 PHP 变量未在查询中正确回显。

      <?php
      function searchDatabase($key, $value)
          {
              $query = "SELECT * FROM user_data WHERE username='".$value."'";
              $result = mysqli_query(loadDatabase(), $query);
              $numRows = mysqli_num_rows($result);
              return ($numRows > 0);
          }
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-29
        • 2013-08-13
        • 1970-01-01
        • 2010-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多