你好,我是一个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);
?>发布于 2014-07-09 08:09:51
我认为,如果要使用bindParam()方法,则该值应该是PDOStatement的一个实例。
你看到的医生说:
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);我认为,$dbh是一个PDO实例,而不是mysqli实例。因为没有mysqli::bindParam()。
要解决这个问题,您可以:
发布于 2014-07-09 08:04:16
当您使用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());编辑:从正式的文档中添加了一些代码
https://stackoverflow.com/questions/24648278
复制相似问题