从数组中检索值以存储在表中

时间:2013-05-28 18:25:35

标签: php mysql pdo

我有以下数据从Twitter上转储到我的网站上。

array(4) {  
    ["oauth_token"]=> string(50) "19497918-McrcAAd1qrZwWaHljVPNbWVTSSrjolsybKwSXvtQ2" 
    ["oauth_token_secret"]=> string(39) "Mixl5gYZjxQqzGhs1q0GoP9DDBwxVDWfBRgldJE"    
    ["user_id"]=> string(8) "19497958" 
    ["screen_name"]=> string(6) "Liam" 
}

我想以某种方式将它存储在我的表中。我的表结构是:

id   |   oauth_token   |   oauth_token_secret   |   user_id   |   screen_name

我目前正在尝试使用以下语句插入我的数据

$qry = $conn->prepare('INSERT INTO users (access_token) VALUES (?)');
$qry->execute(array($access_token));

然而,这会引发页面错误,我的页面将不再加载。我怎么能纠正这个?

3 个答案:

答案 0 :(得分:2)

鉴于您的变量已经是一个数组,并且非常适合prepare()语句,请执行以下操作:

$qry = $conn->prepare('INSERT INTO users 
              (oauth_token, oauth_token_secret, user_id, screen_name)
              VALUES (:oauth_token, :oauth_token_secret, :user_id, :screen_name)');
$qry->execute($access_token);

这就像这样做,这就是我们通常在PDO中看到预备语句的方式:

$qry = $conn->prepare('INSERT INTO users SET (oauth_token, oauth_token_secret, user_id, screen_name) VALUES (:oauth_token, :oauth_token_secret, :user_id, :screen_name)');
$qry->execute(array(
    'oauth_token' => "19497918-McrcAAd1qrZwWaHljVPNbWVTSSrjolsybKwSXvtQ2",
    'oauth_token_secret' => "Mixl5gYZjxQqzGhs1q0GoP9DDBwxVDWfBRgldJE",
    'user_id' => "19497958",
    'screen_name' => "Liam"
));

答案 1 :(得分:0)

假设你的数组名是:$ access_token,它有值(非空)。

$qry = $conn->prepare('INSERT INTO users (access_token) 
 VALUES ($access_token["oauth_token"], $access_token["oauth_token_secret"],   
 $access_token["user_id"], $access_token["screen_name"])');

 $qry->execute($access_token);

答案 2 :(得分:0)

首先,user_id应该是一个整数,因为它只是数字。

您的代码应该看起来像这样,以您希望的方式工作。

$userarray = array(4) {  
    ["oauth_token"]=> string(50) "19497918-McrcAAd1qrZwWaHljVPNbWVTSSrjolsybKwSXvtQ2" 
    ["oauth_token_secret"]=> string(39) "Mixl5gYZjxQqzGhs1q0GoP9DDBwxVDWfBRgldJE"    
    ["user_id"]=> int(8) "19497958" 
    ["screen_name"]=> string(6) "Liam" 
}

$qry = $conn->prepare('INSERT INTO users (oauth_token, oauth_token_secret, user_id, screen_name) VALUES (:oauth_token, :oauth_token_secret, :user_id, :screen_name)');
$qry->execute($userarray);