簡體   English   中英

從其他頁面調用時在PHP中調試MySQL查詢

[英]Debugging MySQL query in PHP when called from other page

Page1有一個輸入表單。 我使用JavaScript驗證輸入字段:

<input type="text" name="frmBrand" size="50" onkeyup="BrandCheck();" maxlength="100" id="frmBrand"   />
<span id="frmBrand_Status">Enter existing or new brand</span>

然后在JavaScript中,我調用一個PHP腳本:

function BrandCheck()
{
    var jsBrandName = document.forms["AddPolish"]["frmBrand"].value;

    if (jsBrandName !==null || jsBrandName !== "")
        {
        document.getElementById("frmBrand_Status").textContent = jsBrandName
        // alert(jsBrandName);
        var xmlhttp = new XMLHttpRequest();
        var url = "CheckBrand.php";
        var vars = "jsBrandName="+jsBrandName;
        xmlhttp.open("POST",url,true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.onreadystatechange = function()
            {
                if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
                {
                    var return_data = xmlhttp.responseText;
                    document.getElementById("frmBrand_Status").innerHTML = return_data;
                }
            }
        xmlhttp.send(vars);
        document.getElementById("frmBrand_Status").innerHTML = "processing.....";
        }
} 

到現在為止還挺好。 我確實從CheckBrand.php獲得結果,因為它更改了frmBrand_Status。 但是我無法從PHP頁面獲得任何數據庫結果。

<?php
    if(mysqli_connect_errno()) { //if connection database fails
        echo("Connection not established ");
    }  
    //by now we have connection to the database
    else 
    {
    if(isset($_POST['jsBrandName']))
        { //if we get the name succesfully
            $jsBrandName = $_POST['jsBrandName'];
            $dbBrandName = mysql_real_escape_string($jsBrandName);
            if (!empty($dbBrandName)) 
            {
                $dbBrandName = $dbBrandName . "%";
                $sqlQuery = "SELECT `BrandName` FROM `Brand` WHERE `BrandName` like '$dbBrandName'  ORDER BY `BrandName`";

                $result = mysqli_query($con, $sqlQuery);    
                $NumRows = mysqli_num_rows($result);
                // $BrandName_result = mysql_fetch_row($BrandName_query);
                echo "Result " . $dbBrandName . " ----- ". $jsBrandName . "Number rows " .$NumRows. " BrandName = " .$result. " SQL " .$sqlQuery;

                if( $BrandName_result = mysql_fetch_row($BrandName_query))
                {
                    While ($BrandName_result = mysql_fetch_row($BrandName_query))
                    {
                        echo "Brand = " .$BrandName_result[0];
                    }
                }
            }
            else
            {
                echo "dbBrandName = empty" . $dbBrandName;
            }
        }
    }
?>

這樣做時,html頁面顯示普通變量的不斷變化。 例如,當輸入字段包含“ Clu”時,我得到以下輸出,跨度ID frmBrand_Status:

Result Clu% ----- CluNumber rows BrandName =  SQL SELECT `BrandName` FROM `Brand` WHERE `BrandName` like 'Clu%' ORDER BY `BrandName`

隨商標名稱添加%看起來不錯,但是未顯示“行數”(空字段?),顯示了SQL Query,看起來不錯,但沒有任何結果。

而且無法到達if( $BrandName_result = mysql_fetch_row($BrandName_query))部分,因此在調用查詢時肯定出現了問題。

當我通過PHPMyAdmin運行相同的查詢時,確實得到了我期望的結果,該結果是帶有商標名的1行。

我正在使用Firebug嘗試對SQL查詢進行故障排除,但是我找不到可以檢查的地方,因為PHP是服務器端的,所以我可能找不到。 正確? 但是我該怎么解決呢?

發現出了什么問題。 我用來打開數據庫的$ con字符串不再可用。 在站點的其他頁面上,$ con可用,我在索引頁面上使用包含腳本加載數據庫。 但是似乎變量通過XMLHttpRequest()調用時會丟失。 我現在認為這是合乎邏輯的,因為這也可以是對遠程服務器的調用。 所以我的CheckBrand.php頁面只是缺少$ con var來連接數據庫。

暫無
暫無

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

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