2014-05-01 113 views
0

我试图从我的表中获取用户的ID号。出于某种原因,该值总是出现“NULL”,它不应该是,但我无法弄清楚我在这里做错了什么。MYSQL PHP PDO Select语句调用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']; 
    }  

?> 

值返回时应该返回 “12” NULL值。我在这里错过了什么?

+0

'var_dump($ getthenum)'你会得到什么? –

+0

我得到'bool(false)' – bagofmilk

+0

如果你从MySQL客户端运行'SELECT USERID FROM users WHERE全名LIKE'BRAD DAVIS'',那么输出是什么? – user1720897

回答

1

基础上的评论,试试这个:

$getidnum = $db->prepare("SELECT USERID FROM users WHERE fullname LIKE :engineer"); 
$getidnum->execute(array(':engineer' => $engineer)); 
+0

如何从数组中检索值? – bagofmilk

+0

您可以在查询之前定义值,就像您现在正在做的那样。 –

+0

没有运气。我喜欢绑定参数tho :) – bagofmilk

0

在你的代码,这是
$getidnum = $db->prepare("SELECT USERID FROM users WHERE fullname LIKE '$engineer'");行。
改变,要
$getidnum = $db->prepare("SELECT USERID FROM users WHERE fullname LIKE $engineer");

+0

我仍然得到一个空值。 – bagofmilk

+0

您是否也可以回显生成的SQL查询。 – user1720897

0

它可能存在这样的情况没有预期的空间,让您的查询失败。

您需要添加通配符前端和末端以及全名的中间。因此,用“%”替换空格或空格(可能是几个,从不信任用户输入)。所以你有这个:

$ engineer =“%BRAD%DAVIS%”;

试试看,让我知道它是否有效?