这让我有点生气了。我在phpmyadmin中尝试这个query
。
select `id` from `users` where `fb_id` = 507292797 limit 1
这会返回值13
,所以为什么这不起作用:
$sql = "select `id` from `users` " .
"where `fb_id` = :fb_id " .
"limit 1";
try
{
$stmt = $this->db->prepare($sql);
$stmt->bindParam(':fb_id', $fb_id2, PDO::PARAM_INT);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
$result = $stmt->execute();
$stmt->closeCursor();
}
catch (Exception $e)
{
die ($e->getMessage() );
}
echo "id: " . $fb_id2 . " var_dump: " . var_dump($user);
exit();
返回:
id:507292797
var_dump:bool(false)
var_dump应该返回$user['id'] = 13
有人能看到我在这里做错了吗?
PS。这是我的数据库连接函数,如果那件事
$dsn = "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME;
$driver_options = array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8' );
try
{
$this->db = new PDO($dsn, DB_USER, DB_PASS, $driver_options);
答案 0 :(得分:5)
您按此顺序执行操作:
最后两个步骤应该是相反的顺序:你必须先执行语句才能获取数据 (通过执行它获得)。
基本上,而不是使用这个:
// fetch, then execute ???
$user = $stmt->fetch(PDO::FETCH_ASSOC);
$result = $stmt->execute();
你应该使用它:
// Execute, **then** fetch
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_ASSOC);
答案 1 :(得分:1)
在执行之前看起来像是在抓取?