MySQL/PHP输出数组重复查询然后显示结果,如何删除查询? [英] MySQL/PHP output array repeats the query and then shows result, how can I remove the query?

查看:89
本文介绍了MySQL/PHP输出数组重复查询然后显示结果,如何删除查询?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个查询,用于检查表中是否存在该值.然后将结果存储在数组中,并以JSON输出.但是我的回答总是:[{"SELECT EXISTS(SELECT * FROM wp_woocommerce_order_items WHERE order_id = $ sdata)":"1"}; 我只想让它输出结果(0或1) 这是我的代码:

I have a query that checks if the value exists in my table. then it stores the result in an array and outputs it in JSON. But my response is always : [{"SELECT EXISTS(SELECT * FROM wp_woocommerce_order_items WHERE order_id = $sdata)":"1"}; I just want to have it output the result (0 or 1 ) here is my code:

// 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();
?>

推荐答案

首先,我建议您使用准备好的语句.

First of all, I would recommend you to use prepared statements.

第二,将查询作为数组键,因为结果没有别名,所以这就是为什么在数组中看到它的原因.

Second, you get your query as an array key cause result has no alias, so that's why you see it in your array.

第三,您实际上并不需要EXISTS.

Third, you don't really need EXISTS here.

第四,这里也不需要循环:

Forth, you don't need a loop here also:

$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']);

这篇关于MySQL/PHP输出数组重复查询然后显示结果,如何删除查询?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆