类型定义字符串与绑定数不匹配


Type definition string doesn't match number of bind

我在php有一个错误,我不知道如何解决这个问题。顺便说一下,这是我学校课上的例子,所以我真的不知道那里发生了什么。这被支持为主/细节导航。

<?php
$mysqli = new mysqli("localhost", "root", "", "base");
$stmt = $mysqli->prepare('SELECT * FROM aeromiting WHERE id = ":id"');
echo $mysqli->error;
$stmt->bind_param(':id', $_GET['id']);
var_dump($stmt);
$data = $stmt->execute();
?>

警告:mysqli_stmt::bind_param(): type中元素的数量定义字符串不匹配绑定变量的数量C:'xampp'htdocs'test1'detail.php第20行对象(mysqli_stmt)#2 (10){["affected_rows"]=> int(0)("insert_id")=> int(0)("num_rows")=>int(0)("param_count")=> int(0)("field_count")=> int(4)("errno")=>Int (0) ["error"]=> string(0)" ["error_list"]=> array(0) {}[" sqlstate "] =>字符串(5)"00000" ["id"]=> int(1)}

如果你想在PDO中做,试试这个…

<?php
$host = 'localhost'; $db = 'base'; $user = 'root'; $pw = '';
$conn = new PDO('mysql:host='.$host.';dbname='.$db.';charset=utf8', $user,     $pw);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
    $id = $_GET['id'];
    $sql = "SELECT * FROM aeromiting WHERE id=:id";
    $query = $conn->prepare($sql);
    $query->bindValue(':id', $id, PDO::PARAM_INT);
    $query->execute();
    $row = $query->fetch(PDO::FETCH_ASSOC);
    $totalRows = $query->rowCount();
} catch (PDOException $e) {
die("Could not get the data: " . $e->getMessage());
}
?>
查看pdo_mysql获取更多信息。

您在这里混合了api。mysql不能接受字符串或类似的参数

$stmt = $mysqli->prepare('SELECT * FROM aeromiting WHERE id = ":id"');
$stmt->bind_param(':id', $_GET['id']);
应该

$stmt = $mysqli->prepare('SELECT * FROM aeromiting WHERE id = ?');
$stmt->bind_param('i', $_GET['id']);

这当然是假设$_GET['id']是一个整数(因此bind_param中的'i'。如果是字符串,将i替换为s

你应该得到一个bind_result以及,所以你实际上绑定结果从数据库到一些变量。查看MySQLi文档

相关文章: