1

我正在尝试制作一个 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,因为正在运行的服务器没有它可用。

4

1 回答 1

-2

您的代码几乎没有错误的地方:

  • PDOStatement 上不存在 bind_param,但 bindParam 是的。
  • 使用名称绑定参数时,您必须在参数之前将“:”放入查询中。
  • 如果你正在使用?使用索引号。
  • 这是可选的,但您应该使用 PDO consts 传递参数类型,例如字符串的 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";
}
于 2013-07-08T01:26:25.273 回答