【发布时间】:2011-01-09 21:51:00
【问题描述】:
您好,我是第一次使用 stmt(在之前通过扩展类使用标准 mysqli 函数之后,查看转换我的代码。
但是我似乎无法让它工作。我正在使用 PHP 5.2.11 和 mysql 4.1.22。
我有一个像这样的表结构:
CREATE TABLE IF NOT EXISTS `tags` (
`tag_id` smallint(3) unsigned NOT NULL auto_increment,
`title` varchar(32) NOT NULL default '',
PRIMARY KEY (`tag_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
这是我的代码,我一直使用http://devzone.zend.com/article/686 和 php.net 作为参考。
$mysqli = new mysqli('***','***','***','***');
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$stmt = $mysqli->prepare("INSERT INTO tags (title) VALUES (?)");
$stmt->bind_param('s', $title);
$title = 'test 123';
$stmt->execute();
$stmt->close();
$mysqli->close();
它看起来很简单,我希望它将“test 123”插入到标题列中,并且 tag_id 自动递增。但是标题是空白的(tag_id 确实会增加)。
有人知道我哪里出错了吗?
================================================ ==
正如 atli 指出和测试的那样,它适用于 MYSQL 5 及更高版本。因此,尽管 php.net 文档说 mysqli“允许您访问 MySQL 4.1 及更高版本提供的功能”,但使用旧版本的 sql 可能是一个问题。
如果有人能提出另一个可能无法正常工作的原因,或者如何让它在我的环境中工作,那就太好了。如果不是,我想我会继续使用我自己的 mysqli 类扩展来准备和清理查询。
【问题讨论】: