首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在WHERE子句中使用变量时的PHP MySQL结果问题

在WHERE子句中使用变量时的PHP MySQL结果问题
EN

Stack Overflow用户
提问于 2014-01-29 01:21:42
回答 2查看 382关注 0票数 0

我的PHP查询遇到了一个非常奇怪的问题,我试图返回具有正确的rname、rcity和rstate值的行。

代码语言:javascript
运行
复制
$sql = "SELECT * FROM `images` WHERE rname = '" . $rname . "' AND rcity = '" . $rcity . "' AND rstate = '" . $rstate . "'";

当我运行该查询时,它只返回0个结果。但是,如果我只在WHERE子句中使用rname和rstate,它会返回结果。

代码语言:javascript
运行
复制
$sql = "SELECT * FROM `images` WHERE rname = '" . $rname . "' AND rstate = '" . $rstate . "';

这很好用。所以当我尝试在WHERE子句中使用rcity时。

代码语言:javascript
运行
复制
$sql = "SELECT * FROM `images` WHERE rcity = '" . $rcity . "'";

返回0个结果。因此,查询的rcity部分出了问题。如果我将值硬写到查询中,而不是$rcity变量中,它会拉出结果。我仔细检查以确保声明了$rcity,它具有正确的值,等等。

我还在数据库中创建了另一个测试表,以检查数据库端是否存在问题。这个问题仍然存在。

下面是getQuery()函数的完整代码

代码语言:javascript
运行
复制
private function getQuery($data){
    // Takes raw data and creats image(s) query to search for listing resort...
        $listing = $data['listing'];
        $rname = $data['rname'];
        $rcity = $data['rcity'];
        $rstate = $data['rstate'];

        $query = "SELECT * FROM `test` WHERE rname = '" . $rname . "' AND rcity = '" . $rcity . "' AND rstate = '" . $rstate ."'";

        return $query;
}

这是我的数据库类

代码语言:javascript
运行
复制
class db {

        public function __construct(){
            $this->server = DB_SERVER;
            $this->user = DB_USER;
            $this->Pass = DB_PASS;
            $this->Database = DB_Database;
        }

        protected function connect(){
            return mysqli_connect($this->server, $this->user, $this->Pass, $this->Database);
        }

        public function query($sql){

            $conn = $this->connect();
            $query = $conn->query($sql);

                if($query == false) {
                    throw new Exception("Query failed:".PHP_EOL.$conn->error.PHP_EOL.$sql);
                }
                if($query->num_rows == 0) {
                    // need E_NOTICE errors enabled to see this,
                    // on screen if display_errors is on, else in PHP error log
                    trigger_error("Query returned 0 rows:".PHP_EOL.$sql);
                }
                $result = array();
                    while ($row = $query->fetch_assoc()){
                        $result[] = $row;
                    }
                return $result;
        }

    }

我在一个类__construct函数中调用查询,如下所示

代码语言:javascript
运行
复制
$con = new db;

    $sql = $this->getQuery($data);
    $result = $con->query($sql);
EN

回答 2

Stack Overflow用户

发布于 2015-05-25 23:57:31

我认为问题可能出在语法或mysql筛选上。尝试使用PDO with bindParam method

票数 1
EN

Stack Overflow用户

发布于 2014-01-29 01:32:00

代码语言:javascript
运行
复制
$sql = "SELECT * FROM `images` WHERE rname = '$rname' AND rcity = '$rcity' AND rstate = '$rstate'";

尝试实现这一点,即在' (撇号)之间直接使用变量,它应该工作得很好

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21412423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档