php - 使用 php 数组选择 mysql 数据不起作用

标签 php mysql arrays

由于某种原因,此代码无法正常工作,我不知道为什么:

$action = array('id', 'lurl', 'account');
$request = 3;
$stm = $pdo->prepare("SELECT ? FROM (SELECT * FROM urls ORDER BY id DESC LIMIT ?) sub ORDER BY id ASC");
$stm->bindValue(1, implode(',', $action));
$stm->bindValue(2, $request, PDO::PARAM_INT);
$stm->execute();
$data = $stm->fetchAll();

它所做的只是返回以下数组:

Array ( [0] => Array ( [id,lurl,account] => id,lurl,account ) [1] => Array ( [id,lurl,account] => id,lurl,account ) [2] => Array ( [id,lurl,account] => id,lurl,account ) )

但是当我像这样在查询中手动输入数据时:

SELECT id,lurl,account FROM (SELECT * FROM urls ORDER BY id DESC LIMIT 3);

它做了它应该做的事情。有谁知道这是为什么吗?

最佳答案

使用bindValue,您只能绑定(bind)“值”,而不能绑定(bind)引用。要绑定(bind)引用,您需要使用bindParam

更改:

$stm->bindValue(1, implode(',', $action));
$stm->bindValue(2, $request, PDO::PARAM_INT);

致:

$stm->bindParam(1, implode(',', $action));
$stm->bindParam(2, $request, PDO::PARAM_INT);

关于php - 使用 php 数组选择 mysql 数据不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16627771/

相关文章:

java - android中的AES加密和php中的解密,反之亦然

python - 尝试使用 python-mysql-connector 建立与 Mysql 服务器的 SSL 连接时访问被拒绝

php - 计算与数据库的时间差

c - C 代码中的指针问题

php - 匹配实际模式之前的空白字符的正则表达式 - PHP

php - PHP 中的 AWS Cognito 开发人员身份验证

PHP 回显如果不工作

mysql - 从存储过程和/或使用 COUNT 调用存储过程

c - 带有循环和变量的数组

javascript - 我可以将 `fn.apply` 与 `arguments` 一起使用还是必须先将 `arguments` 转换为数组?