MySQLi编写的语句插入零

时间:2013-07-08 00:09:12

标签: php mysqli

我正在尝试制作一个mysqli预处理语句,并且由于某种原因,至少字符串被转换为0(零)。

例:

id - int, PK  
name - varchar(45)

代码

if ($stmt = $mysqli->prepare("INSERT INTO test (name) VALUES(?)")){
    $stmt->bind_param('s',$name);
    $name="Test1";
    $stmt->execute();
} else {
    echo "prepare failed";
}

如果我运行它,表中新插入的行的名称将为0。我究竟做错了什么?我不能使用PDO,因为正在进行的服务器没有它。

1 个答案:

答案 0 :(得分:-1)

您的代码上有一些错误的内容:

  • bind_param在PDOStatement上不存在,但bindParam是。
  • 使用名称绑定参数时,必须在参数之前将“:”放入查询中。
  • 如果你正在使用?使用索引号。
  • 这是可选的,但您应该使用PDO consts传递param类型,例如PDO :: PARAM_STR用于字符串。
  • 最后你在使用它之后定义你的$ name var,这是行不通的:你必须在使用她之前定义var。

<强>代码

if ($stmt = $mysqli->prepare("INSERT INTO test (name) VALUES(:name)")){
    # defining $name
    $name = "Test1";

    # putting $name to the param :name
    $stmt->bindParam(":name", $name, PDO::PARAM_STR);

    # executing the prepared query.
    $stmt->execute();
} else {
    echo "prepare failed";
}