【问题标题】:MySQL/PHP output array repeats the query and then shows result, how can I remove the query? [duplicate]MySQL/PHP 输出数组重复查询然后显示结果,如何删除查询? [复制]
【发布时间】: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)。我认为数组中有保存的查询。
  • 什么意思“获取所有json格式的产品。”?您要返回所有记录还是只返回布尔值 true 或 false?
  • @Dharman 是真还是假
  • @DuhVir 每次在上面的代码中提到它时,我都没有任何字段

标签: php mysql arrays json mysqli


【解决方案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 并给我们一些提示。
猜你喜欢
  • 1970-01-01
  • 2011-12-09
  • 2019-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-02
  • 1970-01-01
相关资源
最近更新 更多