Select查询的输出,用作php中其他Query的输入

时间:2013-11-24 22:00:19

标签: php mysql sql

$id=mysql_query("Select customerId from LoginInfo where username='$un'");
$res4=mysql_query("SELECT d.title, dateRented, totalRent
FROM CustomerDvdRental c, DvdInventory d
WHERE c.customerId = '$ID[0]' && d.dvdId = c.dvdId");

如何使用$id作为我的其他选择查询的输入请帮助我尝试了一切,我猜它不起作用。

3 个答案:

答案 0 :(得分:3)

您需要从查询对象中获取一行,因为mysql_query只返回一个资源,并且无法像数组一样访问它。所以第二行包括代码:

$id = mysql_fetch_array($id); 

这可以解决您的问题。

但最后我会将代码清理得更简洁。这将使您的代码更易于维护。 e.g。

$resource=mysql_query("Select customerId from LoginInfo where username='$un'");
$loginInfo = mysql_fetch_array($resource);
$res4=mysql_query("SELECT d.title, dateRented, totalRent
FROM CustomerDvdRental c, DvdInventory d
WHERE c.customerId = ".$loginInfo[0]." && d.dvdId = c.dvdId");

参考文献:这将向您展示一些示例,并告诉您该函数的作用:http://us2.php.net/mysql_query

注意:我认为这种做法并不好。您根本没有检查输入,甚至没有转义sql字符。这会打开你的sql注入应用程序。 http://en.wikipedia.org/wiki/SQL_injection 为了避免这种情况,我可能会重写整个代码库以使用mysqli自动转义引号等,然后检查输入到白名单。

答案 1 :(得分:1)

尝试加入

SELECT d.title,.. FROM DvdInventory d 加入CustomerDvdRental c ON d.dvdId = c.dvdId 加入LoginInfo l ON c.customerId = l.customerId AND l.username ='$ un'

答案 2 :(得分:0)

以小写字母尝试$id[0]。 Php区分大小写。

编辑:像以前的回复一样添加:

$id = mysql_fetch_array($id);

小心这个案子。