MySQL/PHP 输出数组重复查询然后显示结果,如何删除查询? [复制]
Posted
技术标签:
【中文标题】MySQL/PHP 输出数组重复查询然后显示结果,如何删除查询? [复制]【英文标题】:MySQL/PHP output array repeats the query and then shows result, how can I remove the query? [duplicate] 【发布时间】:2020-01-28 21:57:15 【问题描述】:我有一个查询来检查该值是否存在于我的表中。然后它将结果存储在一个数组中并以 JSON 格式输出。但我的回答总是: ["SELECT EXISTS(SELECT * FROM wp_woocommerce_order_items WHERE order_id = $sdata)":"1"; 我只想让它输出结果(0 或 1) 这是我的代码:
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error)
die("Connection failed: " . $conn->connect_error);
$query = "SELECT EXISTS(SELECT * FROM wp_woocommerce_order_items WHERE order_id = $sdata)";
if ($result = mysqli_query($conn, $query))
$newArr = array();
/* fetch associative array */
while ($db_field = mysqli_fetch_assoc($result))
$newArr[] = $db_field;
echo json_encode($newArr); // get all products in json format.
$conn->close();
?>
【问题讨论】:
请显示 vardump($db_field)。我认为数组中有保存的查询。 How to get the error message in MySQLi? 什么意思“获取所有json格式的产品。”?您要返回所有记录还是只返回布尔值 true 或 false? @Dharman 是真还是假 @DuhVir 每次在上面的代码中提到它时,我都没有任何字段 【参考方案1】:首先,我建议你使用准备好的语句。
其次,您将查询作为数组键获取,因为结果没有别名,这就是您在数组中看到它的原因。
第三,这里不需要EXISTS
。
第四,这里也不需要循环:
$query = "SELECT COUNT(*) FROM wp_woocommerce_order_items as item_exists WHERE order_id = $sdata";
if ($result = mysqli_query($conn, $query))
$newArr = array();
$value = mysqli_fetch_object($result);
$newArr[] = (bool) $value->item_exists;
echo json_encode($newArr); // get all products in json format.
使用准备好的语句:
$stmt = $mysqli->prepare('SELECT COUNT(*) as item_exists FROM wp_woocommerce_order_items WHERE order_id = ?');
$stmt->bind_param("i", $sdata);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
$stmt->close();
echo json_encode((bool) $row['item_exists']);
【讨论】:
第一个我总是得到错误的响应,无论该值是否存在于表中 @getNordic 因为我没有看到代码的其他部分 - 只需调试结果,检查您的$sdata
并给我们一些提示。以上是关于MySQL/PHP 输出数组重复查询然后显示结果,如何删除查询? [复制]的主要内容,如果未能解决你的问题,请参考以下文章