我正在编写一个程序来操纵用户的时间条目。我编写了下面的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);
}
答案 0 :(得分:3)
尝试改变:
$getSelUsrQuery = $dbConnect -> query($getSelUsr);
到
$getSelUsrQuery = $dbConnect ->prepare($getSelUsr);
你有没有抛弃$ uid?这是一个有效的值吗?
答案 1 :(得分:1)
尝试bindValue
insted bindParam
$getSelUsrQuery -> bindValue(':uid', $_REQUEST["selUser"]);