你好,我是一名java开发人员,但对php不熟悉,我尝试使用准备好的语句将数据插入数据库,如这里http://www.php.net/manual/en/pdo.prepared-statements.php中所述。但我收到一个错误,我可以知道这是什么类型的错误以及解决此问题的任何帮助吗?
错误: fatal error :在第 17 行调用 G:****\xampp\htdocs****\registrationControl.php 中未定义的方法 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);
?>
最佳答案
我认为如果你想使用 bindParam()
方法,该值应该是 PDOStatement 的实例。
您看到的文档如下:
$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)";
关于php - 如何使用 php 中准备好的语句插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24648278/