我最近从mysql切换到mysqli并开始使用准备好的语句。在mysql中我们做
$result = mysql_query("SELECT * FROM table WHERE id = ?");
因此,我们将整个表的数组放在一个变量中。
但是在mysqli中
mysqli_stmt_bind_result($stmt, $result);
所以基本上这里只有一个变量绑定到变量结果。我们如何获得与从mysql获得的变量(数组)相同的变量? PS-希望我的问题足够清楚。我知道他们的方法不多,但我希望能找到最好的方法。 PSS-我对程序方式比较满意。
最终,这段代码可以正常工作了!
<?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); ?>