当我对数据库执行此查询时:
SELECT * FROM `task` WHERE `date_time_from` like '%0000%'我得到了一些结果,现在我正试图用PDO做同样的事情,但我无法获得任何结果或错误。这就是我所做的:
$dbChain = 'mysql:host='.$GLOBALS['dbhost'].';dbname='.$GLOBALS['dbname'];
try{
$dbh = new PDO($dbChain, $GLOBALS['dbuser'], $GLOBALS['dbpassword']);
$sql = "SELECT * FROM task"
. "WHERE date_time_from like CONCAT('%', :dateFrom, '%')";
$a = '0000';
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':dateFrom', $a);
$stmt->execute();
$total = $stmt->rowCount();
echo $total;
while ($row = $stmt->fetch()){
var_dump($row);
}
} catch (Exception $e){
echo 'Error'.$e->getMessage();
}这样做的结果是$total = 0。谁能告诉我我做错了什么?
我也尝试过这个:
$sql = "SELECT * FROM task"
. "WHERE date_time_from like :dateFrom";
$a = "%0000%";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':dateFrom', $a);
$stmt->execute();$total的结果也是如此。
发布于 2015-06-15 12:03:30
bindParam转义查询中的"%“。它不会像你预期的那样工作。
但是,您可以像这样使用bindValue ...
$sql = "SELECT * FROM task WHERE date_time_from LIKE ?";
$stmt = $dbh->prepare($sql);
$stmt->bindValue( 1, "%0000%" );
$stmt->execute();或者,如果您希望datetime列中的值为0,则可以这样做:
$sql = "SELECT * FROM task WHERE date_time_from = '0000-00-00'";https://stackoverflow.com/questions/30816731
复制相似问题