一尘不染

Mysqli-将结果绑定到数组

mysql

我最近从mysql切换到mysqli并开始使用准备好的语句。在mysql中我们做

$result = mysql_query("SELECT * FROM table WHERE id = ?");

因此,我们将整个表的数组放在一个变量中。

但是在mysqli中

mysqli_stmt_bind_result($stmt, $result);

所以基本上这里只有一个变量绑定到变量结果。我们如何获得与从mysql获得的变量(数组)相同的变量?
PS-希望我的问题足够清楚。我知道他们的方法不多,但我希望能找到最好的方法。
PSS-我对程序方式比较满意。


阅读 280

收藏
2020-05-17

共1个答案

一尘不染

最终,这段代码可以正常工作了!

  <?php 
    $host = 'localhost'; 
    $user = 'root'; 
    $pass = '1234'; 
    $data = 'test';

    $mysqli = new mysqli($host, $user, $pass, $data); 
    /* check connection */ 
    if (mysqli_connect_errno()) { 
        printf("Connect failed: %s\n", mysqli_connect_error()); 
        exit(); 
    }

    if ($stmt = $mysqli->prepare("SELECT * FROM sample WHERE t2 LIKE ?")) { 
        $tt2 = '%';

        $stmt->bind_param("s", $tt2); 
        $stmt->execute();

        $meta = $stmt->result_metadata(); 
        while ($field = $meta->fetch_field()) 
        { 
            $params[] = &$row[$field->name]; 
        }

        call_user_func_array(array($stmt, 'bind_result'), $params);

        while ($stmt->fetch()) { 
            foreach($row as $key => $val) 
            { 
                $c[$key] = $val; 
            } 
            $result[] = $c; 
        }

        $stmt->close(); 
    } 
    $mysqli->close(); 
    print_r($result); 
    ?>
2020-05-17