如何在准备好的语句中插入MySQLi

时间:2013-09-02 20:23:48

标签: php mysql mysqli

嗨!我的结构如下所示:

CREATE TABLE IF NOT EXISTS `search` (
  `key` varchar(255) NOT NULL,
  `id` int(15) NOT NULL auto_increment,
  UNIQUE KEY `key` (`key`),
  KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

这就是我尝试将数据添加到中的方式:

$stmt = $mysqli->prepare("INSERT INTO search(key) VALUES (?)");
$stmt->bind_param('s',$keyword);
$stmt->execute();
$stmt->close();

这就是我得到的:

Call to a member function bind_param() on a non-object

但是当我这样做时它会起作用:

$stmt = $mysqli->prepare("INSERT INTO search VALUES (?,NULL)");
$stmt->bind_param('s',$keyword);
$stmt->execute();
$stmt->close();

除了将 NULL 添加到 VALUES 之外还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

  

是否有必要将NULL设置为自动增量?

没有。
并且没有必要通过疯狂猜测找到答案 您必须改为收到错误消息。

为了这个目的,始终在连接到mysqli之前使用此行:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

对于某个查询,key是一个mysql关键字,必须在反引号中引用

INSERT INTO search(`key`) VALUES (?)