我有一個應該從數據庫中獲取API令牌的函數。 已經測試我發現,準備SQL語句中的行是查殺腳本腳本:準備好的陳述式查殺腳本
static function get_tokens($platform, $is_breaking_news = 0, $in_test_mode=0) // 1-android, 2-ios
{
global $dbh;
$paid =2;
$status = 1;
$result = array();
$query = '
SELECT
mobile_install_device_token, mobile_install_id
FROM
' . TABLE_PREFIX . 'mobile_installs
WHERE
mobile_install_platform = :platform
AND
mobile_install_app_type = :paid
AND ';
if ($is_breaking_news)
{
$query .= '
mobile_install_pn_status > :status
';
$status = 0;
}
else
{
$query .= '
mobile_install_pn_status = :status
';
}
$stmt = $dbh->prepare($query); // **THIS IS THE KILLER!**
try
{
$stmt->bindParam(':platform', $platform);
$stmt->bindParam(':paid', $paid);
$stmt->bindParam(':status', $status);
$stmt->execute();
}
catch(PDOException $e)
{
Utils::sql_fail($query, $e->getMessage());
}
while($row = $stmt->fetch())
{
if ($in_test_mode)
{
if (!in_array($row['mobile_install_id'], array(4, 5, 13, 8)))
{
continue;
}
}
echo 'send to ' . $row['mobile_install_id'] . PHP_EOL;
$result[] = $row['mobile_install_device_token'];
}
return $result;
}//end function get_tokens
我發現這是一個known bug,但所提供的解決方案有沒有似乎工作。 任何想法?
究竟是哪裏的事情失敗和錯誤信息? (編輯:啊,我現在看到了,閱讀bug報告,或者澄清它完全消失) – 2013-02-22 10:42:15