當我用PDO運行這個查詢到一個mysql數據庫時,它返回錯誤的數據類型。PHP PDO位(1)返回錯誤的數據類型
<?php
$parameters = array(":1",92323);
$query = " SELECT s.Site_ID,s.Site_Url,s.Site_Name, s.Site_Approved, s.Site_Status, s.Thumbnailed ,st.Description AS Site_Status_Desc
FROM Sites s
LEFT JOIN Sites_Status st ON st.Status_ID = s.Site_Status
WHERE s.Account_ID = :1";
try {
$this->DBH = new PDO("mysql:host={$host};dbname={$db}", $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$this->stmt = $this->DBH->prepare($query);
if(count($parameters)>0) {
foreach ($parameters as $key => $var) {
switch ($var) {
case is_int($var):
$this->stmt->bindValue($key,$var, PDO::PARAM_INT);
break;
case is_bool($var):
$this->stmt->bindValue($key,$var, PDO::PARAM_BOOL);
break;
case is_null($var):
$this->stmt->bindValue($key,$var, PDO::PARAM_NULL);
break;
default:
$this->stmt->bindValue($key,$var, PDO::PARAM_STR);
break;
}
}
}
if($this->stmt->execute()) {
// Set how many rows the query resulted in
$this->num_rows = $this->stmt->rowCount();
return $this->stmt->fetchObject();
} else {
return false;
}
} catch (PDOException $e) {
$this->error_handler($e);
}
所有行成爲字符串作爲數據類型,除了位字段,它成爲不同的東西......
public 'Site_Approved' => string '�' (length=1)
有一個動態的方式,使PDO返回正確的數據類型?
PHP中的二進制數據類型是字符串。似乎不「不正確」。 – hakre 2012-03-12 10:52:39