需要帮助才能在我的查询中找到语法错​​误

时间:2017-07-19 07:12:02

标签: javascript php mysql

我正在编写一个程序来操纵用户的时间条目。我编写了下面的PHP,以便在从JavaScript推送变量时从服务器检索用户详细信息。

我的问题是SQL抛出一个致命的错误,它接近变量:uid。

以下是我收到的完整错误

  

致命错误:未捕获的异常' PDOException' with message' SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以便在':uid'附近使用正确的语法。在第1行'第25行的*** \ TimSheetSystem \ bin \ Functions \ getUsrId.php

这是我的javascript,

function getUser2(){

var selUser = document.getElementById("uid").value;

if(window.XMLHttpRequest)
{
    xmlhttp=new XMLHttpRequest();
}
else
{
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function()
{
    if(xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        document.getElementById("userSelect").innerHTML=xmlhttp.responseText;
    }
};
xmlhttp.open("POST","../functions/getUsrId.php?uid=getUsr2&selUser="+selUser,true);
xmlhttp.send();

}

这是带有查询的PHP,

$getSelUsr = "SELECT * FROM userlogin WHERE uId = :uid";
$getSelUsrQuery = $dbConnect -> query($getSelUsr);
$getSelUsrQuery -> bindParam(':uid', $_REQUEST["selUser"]);
$getSelUsrQuery -> execute();
$getSelUsrRow = $getSelUsrQuery -> fetch(PDO::FETCH_ASSOC);

echo "<option id= ".$getSelUsrRow["uId"].">".$getSelUsrRow["fName"]." ".$getSelUsrRow["lName"]."</option>";

我查看并查看了所有半版本,并尝试直接使用JavaScript推送数据,但我仍然反复收到相同的错误。

有人能说出我做错了吗。

EDIT1 这是通过定时函数调用者调用getUser2函数的页面。

主页,

<?php if ($_SESSION["sT"] == "Done"){ ?>
 <body onload="tEditReload2()">
 <div id="divCenter-timeEdit" class="box">
  <label id="sbId" hidden><?php echo $_SESSION["uRole"]?></label>
   <div class="logo-timeEdit">
        <img src="../../images/logo.png" width="142" height="33">
    </div>
    <div id="mainDiv" style="height: 38px;">
        <label for="dPicker">Date:</label>
        <input type="text" id="dPicker" style="margin-left: .5%;" size="10" value="<?php echo $getStermRow["sDate"]; ?>">
        <label for="userSelect" style="margin-left: 2%">Select User:</label>
        <select id="userSelect" style="width:160px; margin-left: .5%;" onchange="usrId(this.id);"></select>
        <input type="text" id="uid" size="1" value="<?php echo $getStermRow["sUid"]; ?>" hidden>
 <input type="button" class="getData" value="Submit" onclick="getData();">
    </div>
    <div id="resultTable"><span id="noDataMsg"></span> </div>2
</div>
</body>

定时功能来电,

function tEditReload2() {
    getUser2();
    setTimeout("getData();",100);
}

2 个答案:

答案 0 :(得分:3)

尝试改变:

$getSelUsrQuery = $dbConnect -> query($getSelUsr);

$getSelUsrQuery = $dbConnect ->prepare($getSelUsr);

你有没有抛弃$ uid?这是一个有效的值吗?

答案 1 :(得分:1)

尝试bindValue insted bindParam

$getSelUsrQuery -> bindValue(':uid', $_REQUEST["selUser"]);