Php 绑定中的参数与绑定字段的数量不匹配?
我使用mysqli在数据库上执行查询。这是我的代码:Php 绑定中的参数与绑定字段的数量不匹配?,php,sql,mysqli,Php,Sql,Mysqli,我使用mysqli在数据库上执行查询。这是我的代码: 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
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_params,$find;
我得到这个错误:
警告:mysqli_stmt::bind_param:类型定义字符串中的元素数与绑定变量数不匹配
注意:$connection包含与数据库建立的连接。我做错了什么?您的绑定参数方法很好。问题是这句话,
$stmt->bind_result($res);
在SELECT语句中,您正在执行SELECT*FROM。。。但是在->bind_result方法中,您试图用变量$res只绑定一个结果列
所以你的准备声明应该是这样的:
$stmt = $connection->prepare("SELECT column1 FROM table1 WHERE code = ?")
while ($stmt->fetch()) {
// your code
// echo $res . "<br />";
}
稍后,如果您想循环它,可以执行以下操作:
$stmt = $connection->prepare("SELECT column1 FROM table1 WHERE code = ?")
while ($stmt->fetch()) {
// your code
// echo $res . "<br />";
}
请按照以下正确方式操作:
在您的情况下,它将是这样的:修改
注:
您可以指定需要多少列数据
例如:
表中有colone、coltwo、colthree、colfour等列。
您可以编写查询:从tablename中选择*。现在您只想显示2个
列colone,colthree,可以使用bindcolumn。你必须使用
像这样:$stmt->bindColumn'colone',
$cal1$stmt->bindColumn'colthree',$cal3*
你的绑定参数很好。问题在于$stmt->bind_result$res;。将SELECT语句从SELECT*更改为from。。。要从…@RajdeepPaul中选择column1,好的,如果我设置了一个特定的列,如SELECT column\u name working,我想在bind\u结果中,我应该设置要从数据库中检索的列的确切数量?然后,重复一段时间。是的,这是正确的。我在下面给出了一个答案。希望这将解决您的问题,包括如何对它们进行迭代。@Sandokan请查看我的更新答案。您没有以正确的方式解决手头的问题。不,问题不在于->bind_param方法。不幸的是,它仍然没有解决最初的问题。请阅读。顺便说一句,我不是那个否决这个答案的人。@RajdeepPaul,我想,现在我的答案接近真实答案了。实际上他想要的是,他想设置任何列动态,他也可以使用php来实现。