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

标签 php mysql pdo

你好,我是一名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()

要解决此问题,您可以:

  1. 使用 PDO 类代替 Mysqli
  2. 以最简单的方式创建查询:

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

关于php - 如何使用 php 中准备好的语句插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24648278/

相关文章:

PHP - 一个函数到 "sanitize"一个字符串

php - Laravel Eloquent : Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous

php - 让用户下载 XML 文件

php - 在Elasticsearch中设置大小不受限制的值

mysql - 从两个或多个表中查找唯一值

php - 通过 PDO PHP 统计前 10 篇文章访问者

PHP PDO::FETCH_ASSOC 返回 false

php - mysql varchar with utf8mb4最大字符存储容量

mysql - 如果为空,则排除 where 子句字段?

php - 为什么 SUM (`column` ) 返回一个字符串而不是一个整数?