mysqli准备好的语句不返回值

时间:2020-06-27 19:30:45

标签: php mysql mysqli

考虑表格email_templates:

CREATE TABLE IF NOT EXISTS `email_templates` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` tinytext NOT NULL DEFAULT '',
  `display_name` tinytext NOT NULL DEFAULT '',
  `from` text NOT NULL DEFAULT '',
  `to` text NOT NULL DEFAULT '',
  `subject` tinytext NOT NULL DEFAULT '',
  `body` mediumtext NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

id  name                          display_name  from    to  subject body
1   maintenance_request_customer                                    lorem ipsum

以下代码:

$sql = "SELECT ? FROM `email_templates` WHERE `name` = ?";
$stmt = mysqli_prepare($link, $sql);
$params = array('body', 'maintenance_request_customer');
mysqli_stmt_bind_param($stmt, "ss", ...$params);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $body);
mysqli_stmt_fetch($stmt);
error_log($body);

输出:

'body'

以及以下代码:

$sql = "SELECT ? FROM `email_templates` WHERE `name` = ?";
$stmt = mysqli_prepare($link, $sql);
$params = array('body', 'maintenance_request_customer');
mysqli_stmt_bind_param($stmt, "ss", ...$params);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
while ($row = $result->fetch_assoc()) {
    error_log(var_export($row, true));
}

输出:

array (
  '?' => 'body',
)

在两种情况下,我都希望以某种方式获得值lorem ipsum。 无论哪种情况,我都无法获得价值。我更喜欢使用使用mysqli_stmt_get_result的方法,但是我想知道为什么这两种方法都无法按预期工作。非常感谢!

0 个答案:

没有答案
相关问题