MYSQL PHP PDO Select语句调用null

时间:2014-05-01 19:13:24

标签: php mysql null

我试图从我的表中获取用户的ID号。出于某种原因,价值总会出现" NULL",它不应该是,但我无法弄清楚我在这里做错了什么。

以下是我的表'用户'看起来:

enter image description here

<?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值。我在这里缺少什么?

3 个答案:

答案 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 ;;

尝试一下,让我知道它是否有效?