考虑表格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
的方法,但是我想知道为什么这两种方法都无法按预期工作。非常感谢!