在 PHP-MYSQL 中使用 `fetch_assoc()` 在准备好的语句中使用多个 `WHERE` 子句打印由 `SELECT *` 设置的结果的正确方法是什么?
What is the correct way of printing results set by `SELECT *` with multiple `WHERE` clauses in prepared statements using `fetch_assoc()` in PHP-MYSQL?
我的查询如下:
$query = 'SELECT * FROM `table_name` WHERE `uid` = ? AND `email` = ?';
$stmt_select = $conn->prepare($query);
$stmt_select->bind_param('is', $user_id, $user_email);
$user_id = $_SESSION['uid'];
$user_email = $_SESSION['user_email'];
$result = $stmt_select->execute();
我想使用 fetch_assoc
打印结果集,这是因为我不想 bind_result()
所有 23 列的名称,我想使用 $row['column_name']
打印它,实现它的正确方法是什么?
如果你想看我的代码,我在这里问了另一个问题:
How to SELECT * with multiple WHERE using fetch_assoc in prepared statements in PHP-MYSQL?
但是没有得到正确的回答,所以你能告诉我实现它的最佳方法是什么而不是更正我的代码吗?
我在 mysqli 中使用 SELECT *
时遇到了同样的问题。问题在于 bind_result
部分。通常您需要添加许多变量。这意味着如果您有大约 20 列,则需要在 bind_result
语句中包含 20 个变量。
我已经定制了我的解决方案来解决您的问题。
$query = 'SELECT * FROM `table_name` WHERE `uid` = ? AND `email` = ?';
$stmt_select = $conn->prepare($query);
$stmt_select->bind_param('is', $user_id, $user_email);
$user_id = $_SESSION['uid'];
$user_email = $_SESSION['user_email'];
$result = $stmt_select->execute();
$stmt_select->store_result();//after this line we can output the number of rows if you need to check that as well
$number_of_rows = $stmt_select->num_rows;
$meta = $stmt_select ->result_metadata();
$parameters = array();
$results = array();
while ($field = $meta->fetch_field()) {
$parameters[] = &$row[$field->name];
}
call_user_func_array(array($stmt_select , 'bind_result'), $parameters);
while ($stmt_select ->fetch()) {
foreach ($row as $key => $val) {
$x[$key] = $val; //here we get the key => value (Column => Value)
}
$results[] = $x; //lets grab everything here
}
print_r($results);
我的查询如下:
$query = 'SELECT * FROM `table_name` WHERE `uid` = ? AND `email` = ?';
$stmt_select = $conn->prepare($query);
$stmt_select->bind_param('is', $user_id, $user_email);
$user_id = $_SESSION['uid'];
$user_email = $_SESSION['user_email'];
$result = $stmt_select->execute();
我想使用 fetch_assoc
打印结果集,这是因为我不想 bind_result()
所有 23 列的名称,我想使用 $row['column_name']
打印它,实现它的正确方法是什么?
如果你想看我的代码,我在这里问了另一个问题: How to SELECT * with multiple WHERE using fetch_assoc in prepared statements in PHP-MYSQL?
但是没有得到正确的回答,所以你能告诉我实现它的最佳方法是什么而不是更正我的代码吗?
我在 mysqli 中使用 SELECT *
时遇到了同样的问题。问题在于 bind_result
部分。通常您需要添加许多变量。这意味着如果您有大约 20 列,则需要在 bind_result
语句中包含 20 个变量。
我已经定制了我的解决方案来解决您的问题。
$query = 'SELECT * FROM `table_name` WHERE `uid` = ? AND `email` = ?';
$stmt_select = $conn->prepare($query);
$stmt_select->bind_param('is', $user_id, $user_email);
$user_id = $_SESSION['uid'];
$user_email = $_SESSION['user_email'];
$result = $stmt_select->execute();
$stmt_select->store_result();//after this line we can output the number of rows if you need to check that as well
$number_of_rows = $stmt_select->num_rows;
$meta = $stmt_select ->result_metadata();
$parameters = array();
$results = array();
while ($field = $meta->fetch_field()) {
$parameters[] = &$row[$field->name];
}
call_user_func_array(array($stmt_select , 'bind_result'), $parameters);
while ($stmt_select ->fetch()) {
foreach ($row as $key => $val) {
$x[$key] = $val; //here we get the key => value (Column => Value)
}
$results[] = $x; //lets grab everything here
}
print_r($results);