Привет, я впервые играю с 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 и выше. Так что это, вероятно, проблема с использованием старой версии sql, хотя в документации php.net говорится, что mysqli «позволяет вам получить доступ к функциональности, предоставляемой MySQL 4.1 и выше».
Если кто-то может предложить другую причину, по которой он может не работать или как заставить его работать в моей среде, это было бы здорово. Если нет, я полагаю, что я буду использовать собственное расширение класса mysqli для подготовки и очистки запросов.