我试图从我的表中获取用户的ID号。出于某种原因,价值总会出现" NULL",它不应该是,但我无法弄清楚我在这里做错了什么。
以下是我的表'用户'看起来:
<?php
...........................................
....connection details (connection is not the problem as other SQL queries in my code work fine)
...........................................
...........................................
$getvals = $db->prepare("SELECT MFG_LINE, PM_MECHANICAL, PM_DESIGN, PM_APPLICATIONS, PM_PROGRAM, DESCRIPTION FROM new_schedule WHERE ITEM = '$jobnum'");
$getvals->execute();
while ($row = $getvals->fetch(PDO::FETCH_ASSOC)){
$prod_line=$row["MFG_LINE"];
$pe=$row["PM_MECHANICAL"];
$de=$row["PM_DESIGN"];
$ae=$row["PM_APPLICATIONS"];
$ce=$row["PM_PROGRAM"];
$model=$row["DESCRIPTION"];
}
/*Is job PE, DE, or CE?*/
$engtype = rand(1,3);
if ($engtype===1) { $engineer = $pe; }
else if ($engtype===2) { $engineer = $de; }
else if ($engtype===3) { $engineer = $ce; }
else { $engineer = "Error 1005"; }
echo $engineer;
if ($engineer == null || $engineer = "") {
$theengineer = 0;
echo "nope";
} else {
$getidnum = $db->prepare("SELECT USERID FROM users WHERE fullname LIKE '$engineer'");
$getidnum->execute();
$getthenum = $getidnum->fetch(PDO::FETCH_ASSOC);
$theengineer = $getthenum['USERID'];
}
?>
当值返回&#34; 12&#34;时,该值返回NULL值。我在这里缺少什么?
答案 0 :(得分:1)
根据评论,试一试:
$getidnum = $db->prepare("SELECT USERID FROM users WHERE fullname LIKE :engineer");
$getidnum->execute(array(':engineer' => $engineer));
答案 1 :(得分:0)
在您的代码中,行为$getidnum = $db->prepare("SELECT USERID FROM users WHERE fullname LIKE '$engineer'");
。
将其更改为
$getidnum = $db->prepare("SELECT USERID FROM users WHERE fullname LIKE $engineer");
答案 2 :(得分:0)
可能存在不期望的空格,因此您的查询失败。
您需要添加通配符的前端和末尾以及全名的中间位置。因此,在&#34;%&#34;中间替换空格或空格(可能是几个,从不信任用户输入)。所以你有这个:
$ engineer =&#34;%BRAD%DAVIS%&#34 ;;
尝试一下,让我知道它是否有效?