mysqli_fetch_assoc()发出警告,表示它想要mysqli_result,但是给出的对象是

时间:2018-01-24 06:53:53

标签: php mysql sql mysqli prepared-statement

我正在尝试使用prepare语句从数据库中获取一些数据并面临此问题。

这是我的代码

function find_subject_by_id($id){
    global $db;

    $sql = "SELECT * FROM subjects ";
    $sql .= "WHERE id=?";
    //echo $sql;

    /*Create a Prepared statement */
    $result = mysqli_prepare($db, $sql);
    confirm_result_set($result);

    /*bind PARAMETERS for markers */
    mysqli_stmt_bind_param($result, 'i', $id);

    /* execute query */
    mysqli_stmt_execute($result);

    /*bind result variables*/
    mysqli_stmt_bind_result($result, $id, $menu_name, $position, $visible);

    /*fetch value*/
    mysqli_stmt_fetch($result);

    $subject = mysqli_fetch_assoc($result); //the warning is here

    /*close connection*/
    mysqli_stmt_close($result);
    return $subject; //returns an assoc array
  }

我准备陈述和学习是相当新的,有人可以帮助我发现我在这里缺少的东西。 如果问题似乎重复或愚蠢,请不要介意。谢谢!

1 个答案:

答案 0 :(得分:3)

通过使用plugins : [ new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false, drop_console: false }, output: { comments: '/^!/' } }) ] ,您可以将特定列绑定到您指定的变量。 然后,您可以像这样获取结果

mysql_stmt_bind_result

或使用您绑定的任何其他变量。

修改

您可以将该语句用作关联数组:

while(mysqli_stmt_fetch($result)){
    printf ("%s\n", $menu_name);
}

将其转换为$mysqliresult = mysqli_stmt_get_result($result); 之后你可以做到

MySqliResult

获取关联数组