我正在使用mysqli
对db执行查询。这是我的代码:
if($stmt = $connection->prepare("SELECT * FROM table1 WHERE code = ?"))
{
$find = "Op";
$stmt->bind_param("s", $find);
$stmt->execute();
$stmt->bind_result($res);
$stmt->fetch();
echo "Res => " . $res;
$stmt->close();
}
现在问题出在这一行:$stmt->bind_param("s", $find);
我收到这个错误:
警告:mysqli_stmt :: bind_param():类型定义字符串中的元素数与绑定变量数不匹配
注意:$connection
包含与数据库建立的连接。我做错了什么?
答案 0 :(得分:0)
您的bind_param()
方法没问题。问题在于这个陈述,
$stmt->bind_result($res);
在SELECT
语句中,您正在执行SELECT * FROM ...
,但在->bind_result()
方法中,您尝试仅使用变量{{1}绑定一个结果列}。
所以你的$res
声明应该是这样的:
prepare()
稍后,如果你想循环它,你可以这样做:
$stmt = $connection->prepare("SELECT column1 FROM table1 WHERE code = ?")
答案 1 :(得分:-1)
按照正确的方式:
<?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?');
$sth->bindParam(1, $calories, PDO::PARAM_INT);
$sth->bindParam(2, $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>
在您的情况下,它将是这样的: 已修改
if($stmt = $connection->prepare('SELECT * FROM table1 WHERE code = ?'))
{
$find = 'Op';
$stmt->bind_param(1, $find, PDO::PARAM_STR);
$stmt->execute();
// Fetch column data
// $result = $sth->fetchColumn(2);
// Fetch all data
// $result = $sth->fetchAll();
// echo "<pre>";
// print_r($result);
// Fetch only some columns data.
$stmt->bindColumn(2, $cals);
while ($row = $stmt->fetch(PDO::FETCH_BOUND)) {
print $cals . "</br>";
}
}
注意:
您可以指定所需的列数据。
示例:
您的表格中包含colone,coltwo,colthree,colfour等列。 您编写查询:select * from tablename。现在你想只显示2 column(colone,colthree),你可以使用bindcolumn()。你必须使用 像这样:$ stmt-&gt; bindColumn('colone', $ cal1); $ stmt-&gt; bindColumn('colthree',$ cal3); *