php - 是否可以将变量值添加到选择查询结果 php pdo

标签 php mysql arrays select pdo

假设我有这个查询:

$stmt = $con->_con->prepare("Select id from table", array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
while ($selected_row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $rows[] =  array_map('utf8_encode', $selected_row);
} 

由此我得到:

[{
    "id": "000060000000000071964708\/17\/201309:55:00"
}]

我想添加另一个键值对,例如:

[{
    "id": "000060000000000071964708\/17\/201309:55:00",
    "column": "code1"   
}]

从结果中,我想添加一个值为 code1 的键 column,该值是动态的,我想通过选择查询之外的条件来设置它。 我尝试的是在 while 循环中手动添加列,例如:

while ($selected_row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $rows[] =  array_map('utf8_encode', $selected_row);
    array_push($rows, array('column' => $column));
}

其中 $column = 'code1' 这取决于条件。但它给了我一个结果:

[{
    "id": "000060000000000071964708\/17\/201309:55:00"
}, {
    "column": "code1"
}]

这不是所需的输出。还尝试执行Select id,column AS 'code1'...,其中我手动尝试将要作为选择查询的一部分返回的 key 对值,但是它失败并在 AS ..... 中给出错误。

How to get the desired output from the example? I am open to other solution that is better than the ideas I have in mind

最佳答案

您尝试在 SQL 中执行此操作几乎是正确的,但正确的形式是

SELECT 
  id,
  'code1' AS `column`
FROM...

以带引号的字符串文字形式返回静态值,并带有列别名。因此,您可以使用静态值来查询它:

$stmt = $con->_con->prepare("Select id, 'code1' AS `column` from table", array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));

获取时,会以所需的格式返回结果。但是,由于该值是动态的,因此您可以而且应该为其使用 PDO 占位符。从 PDO 包装类中不清楚您在何处绑定(bind)参数,但 prepare()调用将在 SQL 上进行,例如

// Whatever the source of the dynamic value...
$your_dynamic_value = 'code1';
// Adds :column as a prepared statement placeholder
$stmt = $con->_con->prepare("Select id, :column AS `column` from table", array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));

我必须让你正确调用bindParam()或使用 [':column' => $your_dynamic_value] 传递参数数组在这个不熟悉的 PDO 包装类上执行时, prepare()方法似乎比正常的方法做得更多 PDO::prepare() .

如果您要在获取期间添加它,则需要在将其附加到 $rows[] 之前执行此操作将其添加到迭代器/获取变量 $selected_row :

while ($selected_row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    // Add an array key to the fetched row before calling array_map()
    // and appending to the $rows collection
    $selected_row['column'] = 'code1';
    $rows[] =  array_map('utf8_encode', $selected_row);
}

关于php - 是否可以将变量值添加到选择查询结果 php pdo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46437903/

相关文章:

php - while 或 foreach 与 if 循环

php - 如何计算不同时间跨度内总分的百分位排名?

PHP 只打印 SQL 查询结果的选择行

php - 即使phpMyAdmin连接也无法连接到PHP中的mysql_connect

javascript - 按重要性对数组进行排序

php - 将 xml 对象插入数组

python - 如何绘制 numpy 数组与行数的关系图

php - CodeIgniter:在登录系统中输入正确的用户名和密码时,Google Chrome 中出现空白页面(Mozilla Firefox 中没有任何事件)

php - If 语句在条件中只有一个变量

mysql - 无法使用 Angular 和 Sequelize 在 MariaDB sql server 中运行两个查询(语法错误)