如何在另一个语句中正确使用来自php mysql select语句的数据

时间:2012-02-24 01:13:02

标签: php mysql sql

首先,我首先尝试自己解决这个问题几个小时,并花了很多时间试图找到一个答案,但无济于事..无论如何,任何帮助都会非常感激,非常适合大学! :)

当有人在登录页面上输入他们的id时,我存储了一个“custID”的会话变量。 在我的mysql数据库中,customer表的行包含“custID”和“clientID”。我想要做的是使用链接到该客户ID的客户端ID在表中显示该客户端的详细信息(clientCompany是另一个包含“clientID”的表。所有主键/外键都正常工作)。 $ refclient似乎正在工作。我回应了结果,它给了我“2001”这就是我想要的。

$refclient = mysql_query("SELECT clientID FROM Customer WHERE custID='$_SESSION[custID]'");

echo mysql_result($refclient, 0); // outputs "2001" which is the client ID. this works

但是我现在希望在where子句中的$ client语句中使用该数字。

$client = mysql_query("SELECT * FROM clientCompany WHERE clientID = '$refclient'");

这不工作......我明白$ refclient给出了“资源ID#”,但我如何将其转换为数字,以便where子句有效地说“WHERE clientID = 2001”?我不知道如何使用连接语句(即时通讯!) 我做了一个快速计数功能,显示它没有从表中获取数据(它连接到服务器确定)

$count2=mysql_num_rows($client);
if($count2==1)
 {
  echo "working"; // 1 row is all that it should create
 }
else 
 {
  echo "not working"; //this is what always shows
 }

我在这里有一些表格标题,我遗漏了以缩短我的问题。所有if语句,表格工作正常,所有括号都关闭,类似的东西:)

这是应该输出的内容:

 while($row = mysql_fetch_array($client))
{
echo "<tr>";
echo "<td>" .$row['clientID']. "</td>";
echo "<td>" .$row['compName']. "</td>";
echo "<td>" .$row['compAddress']. "</td>";
echo "<td>" .$row['contactPersonForCompany']. "</td>";
echo "<td>" .$row['compEmail']. "</td>";
echo "<td>" .$row['compPhoneNum']. "</td>";
echo "</tr>";
}

基本上我应该在我的“$ client”选择语句中使用什么而不是'$ refclient'? 当我输入'2001'而不是'$ refclient'时它完美地工作但显然我需要将它链接到输入的custID,因此无法做到这一点。客户也无法知道clientID所以我无法让他们输入/存储在会话变量中..

$client = mysql_query("SELECT * FROM clientCompany WHERE clientID = '$refclient'");

PS抱歉回答一个问题的文章!只想提供尽可能多的细节=)提前感谢!

3 个答案:

答案 0 :(得分:1)

您应该将值保存到变量中,如下所示:

$refclient = mysql_query("SELECT clientID FROM Customer WHERE custID='$_SESSION[custID]'");
$client_num = mysql_result($refclient, 0);
$client = mysql_query("SELECT * FROM clientCompany WHERE clientID = '$client_num'");

答案 1 :(得分:1)

SELECT clientCompany.* FROM Customer, clientCompany WHERE clientCompany.ClientID = Customer.ClientID AND Customer.custID = "jim"

这应该从clientCompany中选择所有内容,它等于客户ID中的clientID,其中custID等于您设置的内容。

答案 2 :(得分:0)

你真是太近了。您需要将结果转换为数字,然后将其传递给第二个查询:

$refclient = mysql_query("SELECT clientID FROM Customer WHERE custID='{$_SESSION['custID']}'");
$numeric_refclient = mysql_result($refclient, 0);
$client = mysql_query("SELECT * FROM clientCompany WHERE clientID = '$numeric_refclient'");

但是,这也可以通过一步加入或子查询来完成:

$client = mysql_query(
   "SELECT * FROM clientCompany WHERE 
      clientID IN (
        SELECT clientID FROM Customer WHERE custID='{$_SESSION[custID]}'
    )"
);