我有我的PHP MySQL查詢一個非常奇怪的問題,我想返回有正確的RNAME,rcity和rstate值的行。使用一個變量時PHP MySQL的結果問題在WHERE子句
$sql = "SELECT * FROM `images` WHERE rname = '" . $rname . "' AND rcity = '" . $rcity . "' AND rstate = '" . $rstate . "'";
當我運行該查詢時,它只返回0結果。然而,在玩過它之後,如果我只在WHERE子句中使用rname和rstate,它將返回結果。
$sql = "SELECT * FROM `images` WHERE rname = '" . $rname . "' AND rstate = '" . $rstate . "';
這是完美的。所以當我試圖在WHERE子句中使用rcity時。
$sql = "SELECT * FROM `images` WHERE rcity = '" . $rcity . "'";
0結果返回。所以查詢的rcity部分有些問題。如果我努力將值寫入查詢而不是$ rcity變量,它會調出結果。我翻了一番檢查,以確保$ rcity宣佈,它具有正確的價值等
我還創造了另一個測試數據庫中的表進行檢查,看它是否在DB端的問題。問題依然存在。
這裏是getQuery()函數的完整代碼
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;
}
,這裏是我的數據庫類
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函數像這樣
$con = new db;
$sql = $this->getQuery($data);
$result = $con->query($sql);
您可以嘗試構建這樣的查詢:'$ query =「SELECT * FROM \'test \'WHERE rname LIKE'%$ rname%'AND rcity LIKE'%$ rcity%'ANDrstate LIKE '%$ rstate%';「;'讓我知道任何改變? '%'是一個通配符,它將返回包含*變量值的行,不完全匹配。 –
$ rstate的價值是多少?你剛剛做了一個'死($ rstate)','以驗證你有你的想法嗎?如果您確實擁有$ rstate的合法值,您確定數據庫中有匹配的值嗎? – TunaMaxx
可能是它的一個空白問題?無論是數據庫還是請求的數據? –