[英]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.