我正在尝试编写一个准备好的语句,该语句从一组绑定(bind)字段收集数据并将它们输出到名为 $data
的数组变量。
global $db;
$user_id = (int)$user_id;
$fields = 'field1, field2, field3';
$stmt = $db->prepare("SELECT :fields FROM users WHERE user_id = :user_id");
$stmt->bindValue(':user_id', $user_id);
$stmt->bindValue(':fields', $fields);
$stmt->execute();
$result = $stmt->fetchall();
foreach ($result as $row) {
$data[] = array(
'field1' => $row['field1'],
'field2' => $row['field2'],
'field3' => $row['field3']
);
}
print_r($data);
然而我得到的只是......
Notice: Undefined index: field1 in C:\\\\\\.php on line #
Notice: Undefined index: field2 in C:\\\\\\.php on line #
Notice: Undefined index: field3 in C:\\\\\\.php on line #
Array ( [field1] => [field2] => [field3] => )
这是 vardump(注意,这里的代码是我的代码的副本。转储是删除了字段名称的副本和帖子。)
array(1) { [0]=> array(2) { ["field1, field2, field3"]=> string(22) "field1, field2, field3" [0]=> string(22) "field1, field2, field3" } } Array ( [field1] => [field2] => [field3] => )
这可能非常简单..但我现在正在从错误中学习。
此外,我想将 $field
变量从字符串更改为数组。如何绑定(bind)一个数组来处理每条数据,然后将其输出到 $data
数组中?
最佳答案
假设 user_id 是主键,则不需要 foreach 循环
$fields = 'field1, field2, field3';
$stmt = $db->prepare("SELECT $fields FROM users WHERE user_id = ?");
$stmt->execute(array(1));
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$data = array(
'field1' => $result['field1'],
'field2' => $result['field2'],
'field3' => $result['field3']
);
print_r($data);
我的意思是,如果两个用户可以有相同的 id,为什么还要有 user_id
关于php - 如何从准备好的pdo中输出数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21493569/