Php 绑定中的参数与绑定字段的数量不匹配?

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

我使用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 "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来实现。