問題

這個問題已經有一個答案:

  • 2001年12月31日終了的兩年期收入和支出及準備金和基金結餘變動報表 將mysqli結果轉換為json 2001年12月31日終了的兩年期收入和支出及準備金和基金結餘變動報表 6個答案 2001年12月31日終了的兩年期收入和支出及準備金和基金結餘變動報表 2001年12月31日終了的兩年期收入和支出及準備金和基金結餘變動報表

我有一個查詢,檢查值是否存在於我的表中.然後它將結果儲存在陣列中並將其輸出到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();
?>
 

  最佳答案

首先,我建議你使用準備好的發言稿。

其次,您將查詢作為陣列鍵,因為結果沒有別名,所以這就是您在陣列中看到它的原因。

第三,這裡不需要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']);

 

  相同標籤的其他問題

phpmysqlarraysjsonmysqli