2015-06-13 5 views
0

Когда я выполнить этот запрос к БД:PDO MySQL и PHP, как заявление

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.

+0

Какой тип данных является вашей колонкой? – Jens

+0

'date_time_from' - это' datetime' – wti

+3

, вам нужно пространство между 'task' и . 'WHERE' в вашем запросе – SearchAndResQ

ответ

1

bindParam избегает «%» в запросе. Он не будет работать, как вы ожидаете ...

Вы можете, однако, использовать bindValue как так ...

$sql = "SELECT * FROM task WHERE date_time_from LIKE ?"; 
$stmt = $dbh->prepare($sql); 
$stmt->bindValue(1, "%0000%"); 
$stmt->execute(); 

В качестве альтернативы, если вы хотите 0 значения из столбца даты и времени, вы можете просто сделать это :

$sql = "SELECT * FROM task WHERE date_time_from = '0000-00-00'"; 
Смежные вопросы