从函数数据库返回数组

时间:2018-03-29 06:42:38

标签: php mysql database

我对这种编码很新,所以我需要帮助。 这是我从数据库读取值并返回数组的代码:

public function avtorizacije($user)
{
    $sql = "SELECT * FROM uporabniki_avtorizacije WHERE userId=?";
    if( !$this->stmt = $this->mysqli->prepare($sql) )
        throw new Exception("MySQL Prepare statement failed: ".$this->mysqli->error);

    $this->stmt->bind_param("i", $user);
    $this->stmt->execute();
    $this->stmt->store_result();

    if( $this->stmt->num_rows == 0)
        return "";

    $this->stmt->bind_result($value);
    $this->stmt->fetch();

    return $value;
}

这是我得到的错误:

  

警告:mysqli_stmt :: bind_result():绑定变量的数量与...中预准备语句中的字段数不匹配。

我需要从数据库中的选定行返回所有值。

请帮忙。

2 个答案:

答案 0 :(得分:0)

在这里使用

`SELECT *`

从表中提取所有字段,

在这里绑定一个变量。

$this->stmt->bind_result($value);

这是您的错误

  

警告:mysqli_stmt :: bind_result():绑定变量的数量与...中预准备语句中的字段数不匹配。

现在我打赌你的桌子上有一个以上的字段,不是吗?因此,您需要按照查询中的顺序为每个字段绑定变量。

这说我不是Mysqli,就像4年一样,如果我弄错了,请原谅我...大声笑(我现在使用PDO,好多了)

您可以在文档页面的第一个示例中清楚地看到这一点。

http://php.net/manual/en/mysqli-stmt.bind-result.php

答案 1 :(得分:0)

您可以bind_resultarray返回array;

只需将$col索引名称更改为数据库表中的字段名称,按照从SQL字符串中检索它们的顺序。

$col['username'] = '';
$col['col2'] = ''; // change index here and below with reference to the table fields you're fetching
$col['col3'] = '';
$col['col4'] = '';

$this->stmt->bind_result($col['username'], $col['col1'], $col['col1'], $col['col1'] );

$this->stmt->fetch();
return $col;

或者只使用下面的代码。它使用get_result()fetch_assoc()立即以数组格式返回记录。

<强>替代:

public function avtorizacije($user)
{
    $sql = "SELECT * FROM uporabniki_avtorizacije WHERE userId=?";
    if( !$this->stmt = $this->mysqli->prepare($sql) )
        throw new Exception("MySQL Prepare statement failed: ".$this->mysqli->error);

    $this->stmt->bind_param("i", $user);
    $this->stmt->execute();

    $result = $this->stmt->get_result();

    if( $result->num_rows == 0)
        return "";

    return $result->fetch_assoc();
}