有人可以向我解釋爲什麼函數1中的prepare語句不返回結果,但函數2中的查詢語句確實返回結果(12)。PDO準備語句不返回結果
class Test
{ function function1($db)
{
//date_default_timezone_set('America/Chicago'); // CDT
$month = "January"; //date('F');
$day = "9"; //date('j');
// let's query for died today
$stm = $db->prepare("SELECT * FROM graves WHERE dod_month = ? AND dod_day = ? ORDER BY dod_year DESC");
$stm->bindValue(1, $month, PDO::PARAM_STR);
$stm->bindValue(2, $day, PDO::PARAM_STR);
// $stm = $db->query("SELECT * FROM graves WHERE dod_month = 'January' AND dod_day = '9' ORDER BY dod_year DESC");
$affected_rows = $stm->rowCount();
$stm->execute();
var_dump($affected_rows,$month,$day);
}
function function2($db)
{
//date_default_timezone_set('America/Chicago'); // CDT
//$month = "January"; //date('F');
//$day = "9"; //date('j');
// let's query for died today
// $stm = $db->prepare("SELECT * FROM graves WHERE dod_month = ? AND dod_day = ? ORDER BY dod_year DESC");
// $stm->bindValue(1, $month, PDO::PARAM_STR);
//$stm->bindValue(2, $day, PDO::PARAM_STR);
$stm = $db->query("SELECT * FROM graves WHERE dod_month = 'January' AND dod_day = '9' ORDER BY dod_year DESC");
$affected_rows = $stm->rowCount();
$stm->execute();
var_dump($affected_rows);
}
}
結果的var_dump的是:
INT 0
字符串 '一月'(長度= 7)
字符串 '9'(長度= 1)
INT 12
它被執行。 '$ stm-> execute()'除了OP在execute語句之前請求受影響的行之外。所以它返回0. – Mouser 2015-01-09 23:21:50
@Mouser謝謝! – GolezTrol 2015-01-09 23:25:07
謝謝,這不是我第一次這麼做......知道它必須是簡單的東西,因爲類似的代碼在過去有效。 – Artie 2015-01-09 23:56:58