簡體   English   中英

MySQLi查詢在foreach php中不起作用

[英]mysqli query not working in foreach php

我的問題是,當我單擊頁面上的圖片時,它將第一次顯示出來。 但是第二次它將顯示失敗。 該過程將從將數據發送到ajax開始,然后ajax(prosess.js)將其發送到php頁面(process1.php)。

當我刪除blockquote($ query =“ SELECT ...”)中的代碼時,它將運行,但是如果沒有,它將顯示失敗。

process1.php

<?php

    include 'session.php';
    include 'connection.php';
    if(isset($_POST['dataS'])) {
        $table = $_POST['table'];
        $concat = "";
        $serial = $_POST['dataS'];
        $query = "SELECT * FROM product WHERE serialNum = '$serial'";
        $result = mysqli_query($conn, $query);
        $row = mysqli_fetch_assoc($result);

        if($row) {
            $prodName = $row['prodName'];
            $quanProd = 1;
            $priceProd = $_POST['total'] + $row['salePrice'];

            if($table == "") {
                $query = "SELECT * FROM product WHERE serialNum = '$serial'";
                $result = mysqli_query($conn, $query);
                $row = mysqli_fetch_assoc($result);

            }
            else{
                $DOM = new DOMDocument;
                $DOM->loadHTML($table);
                $items = $DOM->getElementsByTagName('tr');
                $check = 0;
                $check_one = 0;
                $y=0;
                function tdrows($elements,$check,$serial,$prodName,$y) { 
                    $quantity="";
                    $item = "";
                    $price = "";
                    $delete = "";

                    $x = 0;
                    foreach($elements as $element) { 
                        if($x == 0)
                            $delete = $element->nodeValue;
                        else if($x == 1)
                            $item = $element->nodeValue;
                        else if($x == 2)
                            $quantity = $element->nodeValue;
                        else if($x == 3)
                            $price = $element->nodeValue;
                        $x++;
                    }

                    **$query = 'SELECT prodName FROM product WHERE prodName = "$item"';
                    $search = mysqli_query($conn, $query) or die(mysqli_error()); 
                    $row = mysqli_fetch_assoc($search);
                    $s = $row['prodName'];**
                    if($prodName == $s) {
                        $quantity++;
                        $check = 1;
                    }
                    else {
                        $check = 0;
                    }
                    return $check;
                }



                foreach ($items as $node) {

                    $check = tdrows($node->childNodes,$check,$serial,$prodName,$y);
                    $y++;
                }
            }
            $priceProd = number_format((float)$priceProd, 2, '.', ''); 
            echo json_encode (
                array ( //this array is used to send the data back to ajax.
                    "success" => "1",
                    "concat" => $concat,
                    "quantity" => $quanProd,
                    "price" => $priceProd,
                )
            );
        }
        else {
            echo json_encode (
                array ( //this array is used to send the data back to ajax.
                    "success" => "0",
                )
            );
        }
    }
    ?>

process.js

$(document).ready(
    function() {
        $("body").on("click","#product .add",
            function(e) {

                var total = document.getElementById("total").value;
                var table = document.getElementById('table-list').innerHTML;
                table = (table.trim) ? table.trim() : table.replace(/^\s+/,'');
                var serial = $(this).attr('id');
                var totalQ = document.getElementById("totalQ").value;

                if(total == "")
                    total = 0;
                else
                    total = parseFloat(total);

                if(totalQ == "")
                    totalQ = 0;
                else
                    totalQ = parseInt(totalQ);  

                var dataS = serial;
                e.preventDefault();
                $.ajax({
                    type : "POST",
                    url : "process1.php",
                    crossDomain: true,
                    data : {dataS : dataS, table : table, total : total},
                    dataType : 'json',  
                })
                .done(function(html) {
                    if(html.success == 1) {
                        console.log('done: %o', html);  
                        $("#table-list").html(html.concat).show();
                        document.getElementById('totalQuantity').innerHTML = html.quantity;
                        document.getElementById("total").value = html.price;
                        document.getElementById("payment").value = html.price;
                        document.getElementById('totalQ').value = html.quantity;
                        document.getElementById('title').innerHTML = html.price;
                        document.getElementById('input').value='';
                        $("#input").focus();
                    }
                    else {
                        alert("Wrong serial number!");
                        document.getElementById('input').value='';
                        $("#input").focus();
                    }
                })
                .fail(function(html) {
                    console.info('fail: %o', html);  
                    alert("fail");
                });
                return false;
        });
}); 

connection.php

<?php
    $conn = mysqli_connect('localhost','root','','rds');
?>

您的查詢有誤:請嘗試

$query = "SELECT prodName FROM product WHERE prodName = '".$item."'";

根據您的圖片,您的問題是數據庫連接不正確。 當您執行第一個請求時,它不會進行任何數據庫交互(因為關閉了注釋)。 您將發送第二個請求table數據,它將執行查詢。 因此,第一個請求將成功,而第二個請求將使您的mysqli$conn )對象出現錯誤。

if($table == "") {
    //Database interaction
    $query = "SELECT * FROM product WHERE serialNum = '$serial'";
    $result = mysqli_query($conn, $query);
    $row = mysqli_fetch_assoc($result);

}
else{
    //No database interaction because of the blocknotes
    $DOM = new DOMDocument;
    $DOM->loadHTML($table);
    $items = $DOM->getElementsByTagName('tr');
    $check = 0;
    $check_one = 0;
    $y=0;
    function tdrows($elements,$check,$serial,$prodName,$y) { 
        $quantity="";
        $item = "";
        $price = "";
        $delete = "";

        $x = 0;
        foreach($elements as $element) { 
            if($x == 0)
                $delete = $element->nodeValue;
            else if($x == 1)
                $item = $element->nodeValue;
            else if($x == 2)
                $quantity = $element->nodeValue;
            else if($x == 3)
                $price = $element->nodeValue;
            $x++;
        }

        **$query = 'SELECT prodName FROM product WHERE prodName = "$item"';
        $search = mysqli_query($conn, $query) or die(mysqli_error()); 
        $row = mysqli_fetch_assoc($search);
        $s = $row['prodName'];**
        if($prodName == $s) {
            $quantity++;
            $check = 1;
        }
        else {
            $check = 0;
        }
        return $check;
    }



    foreach ($items as $node) {

        $check = tdrows($node->childNodes,$check,$serial,$prodName,$y);
        $y++;
    }
}

檢查您的用戶名,密碼和數據庫名稱。 我敢肯定你在這里用錯了。 如在connection.php文件中所述,您不使用密碼。 您確定用戶root用戶沒有密碼嗎? 您可以使用MySQL管理工具(例如phpMyAdmin)訪問數據庫嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM