您好我玩用语句的第一次(在看以前通过扩展类使用标准库MySQLi功能后,在转换我的代码。插入到数据库语句和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();
它似乎很简单,我希望它会插入“测试123”到标题列与tag_id自动递增。但是,标题是空白的(tag_id的确如人们所想的那样增加了)。
任何人有任何想法,我错了吗?
============================================== ===
正如atli指出并测试的,它适用于MYSQL版本为5及以上的版本。所以这可能是使用旧版本的sql的一个问题,尽管php.net文档说mysqli“允许你访问MySQL 4.1及更高版本提供的功能”。
如果任何人都可以建议另一个原因,为什么它可能不工作,或如何让它在我的环境中工作,将是伟大的。如果不是,我想我会继续使用自己的mysqli类的扩展来准备和清理查询。
升级在我当前的环境中是不可能的。但是我会看看是否可以找到另一台可以运行测试的服务器。 get_warnings不会返回任何内容。 – Rob 2010-01-27 11:48:35
在5.0.83上进行了测试,效果很好。这对我来说很烦人。在php.net上对mysqli的介绍说它“允许你访问由MySQL 4.1和更高版本提供的功能”。所以我会认为它应该起作用,显然不是。 – Rob 2010-01-27 11:55:18