无法使用PHP准备语句将数据插入包含自动增量主键的表中

时间:2009-11-02 15:22:01

标签: php mysqli prepared-statement

我知道我有与数据库的连接,并且我使用没有自动增量ID的测试对我来说很好。下面的代码拒绝工作,我无法找到解决方法。我的表有3列,ID(自动增量),名称和值。 我需要更改什么才能使其工作?

提前致谢

//create placeholder query
 $query = "INSERT INTO prepared_test (name, value) VALUES (?,?)";

 //prepare the query
 $stmt = mysqli_prepare($connection, $query);

 $name = 'steve';
 $value = 45;

 mysqli_bind_param($stmt, array(MYSQLI_BIND_STRING, MYSQLI_BIND_INT), $name, $value);
 mysqli_execute($stmt);

 if(mysqli_stmt_affected_rows($stmt) != 1)
  die("issues");

 mysqli_stmt_close($stmt);

 $connection->close();

2 个答案:

答案 0 :(得分:3)

不推荐使用mysqli_bind_param,它只是mysqli_stmt_bind_param的别名,mysqli_stmt_bind_param要求绑定类型为字符串而不是数组。所以只需更改该行。

mysqli_stmt_bind_param($stmt, 'si', $name, $value);

答案 1 :(得分:0)

我建议您使用PDO(http://ar2.php.net/PDO)。它是面向对象的不同数据库接口,它具有更清晰的语法,并从RDBMS中抽象出来;)