如何在php中使用准备好的语句插入数据库

如何在php中使用准备好的语句插入数据库,php,mysql,pdo,Php,Mysql,Pdo,您好,我是一名java开发人员,但不熟悉php。我正在尝试使用此处提到的准备好的语句将数据插入到数据库中,但我遇到了一个错误。请告诉我这是什么类型的错误,以及解决此问题的任何帮助 错误:致命错误:调用G:***\xampp\htdocs****\registrationControl.php第17行中未定义的方法mysqli_stmt::bindParam() <?php $con = new mysqli("127.0.0.1", "root", "", "ksbka"); // Ch

您好,我是一名java开发人员,但不熟悉php。我正在尝试使用此处提到的准备好的语句将数据插入到数据库中,但我遇到了一个错误。请告诉我这是什么类型的错误,以及解决此问题的任何帮助

错误:致命错误:调用G:***\xampp\htdocs****\registrationControl.php第17行中未定义的方法mysqli_stmt::bindParam()

<?php

$con = new mysqli("127.0.0.1", "root", "", "ksbka");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// escape variables for security
$firstname = mysqli_real_escape_string($con, $_POST['username_first']);
$username_email = mysqli_real_escape_string($con, $_POST['username_email']);
$username_tele = mysqli_real_escape_string($con, $_POST['username_tele']);
echo $firstname."@@@@@".$username_email;

$query="INSERT INTO instructorregistration (Id, Name, email, telephone) VALUES (?, ?, ?, ?)";

$pst = $con->prepare($query);
$pst->bindParam(1, "");
$pst->bindParam(2, $firstname);
$pst->bindParam(3, $username_email);
$pst->bindParam(4, $username_tele);
$pst->execute();
if (!mysqli_query($con,$pst)) {
  die('Error: ' . mysqli_error($con));
}
echo "1 record added";
mysqli_close($con);
?>

使用mysqli时,必须使用mysqli方法

$stmt = $con->prepare($query);
$stmt->bind_param(1, "");
...
if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}
/* explicit close recommended */
$stmt->close();

/* Non-prepared statement */
$res = $mysqli->query("SELECT id FROM test");
var_dump($res->fetch_all());

编辑:添加了一些来自官方的代码

我想如果你想使用
bindParam()
方法,那么这个值应该是PDO语句的一个实例

您看到的文件如下所示:

$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$dbh
是一个PDO实例,我想不是mysqli实例。因为没有
mysqli::bindParam()

要解决此问题,您可以:

  • 使用PDO类而不是Mysqli
  • 以最简单的方式创建查询:

    $query="INSERT INTO instructorregistration (Id, Name, email, telephone) VALUES (NULL, $firstname, $username_email, $username_tele)";
    

  • 你混合了
    mysqli
    pdo
    ,这两个链接中有不同的API。它将mysqli和pdo结合在一起。你能告诉我应该做什么吗?你提供的页面上的示例中没有pdo代码。他们没有混合API,你必须编写bind_param而不是bindparm。