这是我在php中遇到的代码的快照。我有一个数据库对象,一个活动类和一个预订表单。从预订表单中,我将三个变量传递给查询数据库的检查可用性方法。 var转储正在返回:
object(DB)#3 (6) { ["_pdo":"DB":private]=> object(PDO)#4 (0) { } ["_query":"DB":private]=>
object(PDOStatement)#6 (1) { ["queryString"]=> string(99) "SELECT * FROM `activity` WHERE name =
'Archery' AND act_date = '05/01/2015' AND time_from = '10.00'" } ["_error":"DB":private]=>
bool(false) ["_results":"DB":private]=> array(0) { } ["_count":"DB":private]=> int(0)
["_data":"DB":private]=> NULL }
这让我觉得查询没有返回一些东西,但查询确实在MySQL中返回记录。任何帮助将不胜感激。
1。调用方法来检查可用性:
if($activity->checkDateTimeAvailability($act_name, $date, $time) === false)){
// Do something here
}
//Method to check if the activity is available at the requested date and time:
public function checkDateTimeAvailability($name, $date, $time) {
$result = $this->_db->query("SELECT * FROM `activity` WHERE name =
'$name' AND act_date = '$date' AND time_from = '$time'");
if(!empty($result)){
echo "query successful";
var_dump($result);
return true;
} else {
return false;
}
}
//Generic query method:
public function query($sql, $params = array()) {
// reset to ensure an error from a previous query is not returned.
$this->_error = false;
if($this->_query = $this->_pdo->prepare($sql)) {
$x = 1;
if(count($params)) {
foreach($params as $param) {
$this->_query->bindValue($x, $param);
$x++;
}
}
if($this->_query->execute()) {
$this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
$this->_count = $this->_query->rowCount();
} else {
$this->_error = true;
}
}
return $this;
}
答案 0 :(得分:0)
首先,永远不要在SQL查询中使用变量,使用prepare语句。
对你提问。 PDO::query
方法返回PDOStatement
个对象。使用此对象,您可以从数据库服务器获取结果。
只需致电$this->_db->query('Your SQL query')->fetchAll()
即可获得您的行。