我为查询编写此代码
$tableQuery_comment = <<<query
CREATE TABLE IF NOT EXISTS `?comment` (
`cmt_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`cmt_obj_id` bigint(20) NOT NULL DEFAULT '0',
`cmt_author_name` tinytext NOT NULL,
`cmt_author_email` varchar(100) NOT NULL DEFAULT '',
`cmt_author_url` varchar(200) NOT NULL DEFAULT '',
`cmt_author_ip` varchar(100) NOT NULL DEFAULT '',
`cmt_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`cmt_content` text NOT NULL,
`cmt_approve` varchar(20) NOT NULL DEFAULT 'yes',
`cmt_agent` varchar(255) NOT NULL DEFAULT '',
`cmt_parent` bigint(20) NOT NULL DEFAULT '0',
`user_id` bigint(20) NOT NULL DEFAULT '0',
PRIMARY KEY (`cmt_id`),
KEY `cmt_obj_id` (`cmt_obj_id`),
KEY `cmt_parent` (`cmt_parent`),
KEY `user_id` (`user_id`)
)
query;
并使用mysqli连接并执行我的查询,并在查询的第一行绑定一个值
$con = new mysqli($dbHost, $dbUser, $dbPass, $dbName);
$exe = $con->prepare($tableQuery_comment);
$exe->bind_param(1, $tablePrefix);
$exe->execute();
并在此行中收到错误
$exe->bind_param(1, $tablePrefix);
错误:
mysqli_stmt :: bind_param():变量数与数量不匹配 准备好的陈述中的参数
我尝试像这段代码一样绑定:name
参数
(当使用此语句更改?签到:tablePrefix)
$exe->bind_param(':tablePrefix', $tablePrefix);
和此代码
$exe->bind_param('s', $tablePrefix);
但又得到了同样的错误
我应该怎么做才能将heredoc中的参数与mysqli绑定?
答案 0 :(得分:2)
只有在允许表达式的情况下,才能使用表名和列名的参数。所以你必须使用字符串替换:
$tableQuery_comment = <<<query
CREATE TABLE IF NOT EXISTS `{$tablePrefix}comment` (
`cmt_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`cmt_obj_id` bigint(20) NOT NULL DEFAULT '0',
`cmt_author_name` tinytext NOT NULL,
`cmt_author_email` varchar(100) NOT NULL DEFAULT '',
`cmt_author_url` varchar(200) NOT NULL DEFAULT '',
`cmt_author_ip` varchar(100) NOT NULL DEFAULT '',
`cmt_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`cmt_content` text NOT NULL,
`cmt_approve` varchar(20) NOT NULL DEFAULT 'yes',
`cmt_agent` varchar(255) NOT NULL DEFAULT '',
`cmt_parent` bigint(20) NOT NULL DEFAULT '0',
`user_id` bigint(20) NOT NULL DEFAULT '0',
PRIMARY KEY (`cmt_id`),
KEY `cmt_obj_id` (`cmt_obj_id`),
KEY `cmt_parent` (`cmt_parent`),
KEY `user_id` (`user_id`)
)
query;