Php 将一个查询的结果用作WHERE子句

Php 将一个查询的结果用作WHERE子句,php,json,phpmyadmin,Php,Json,Phpmyadmin,我试图通过一个查询获取邮政编码,并在where子句中用于另一个查询 <?php $mobile = '07790807055'; //$mobile = $_POST['mobile']; mysql_connect("", "", "") or die(mysql_error()); mysql_select_db("") or die(mysql_error()); $query =("SELECT POSTCODE FROM appregistration WHERE MOBI

我试图通过一个查询获取邮政编码,并在where子句中用于另一个查询

<?php
$mobile = '07790807055';
//$mobile = $_POST['mobile'];


mysql_connect("", "", "") or die(mysql_error());
mysql_select_db("") or die(mysql_error());

$query =("SELECT POSTCODE FROM appregistration WHERE MOBILE_NUMBER = '$mobile'");
$result = mysql_query ($query) or die ("Unable to connect. " . mysql_error());
$row = mysql_fetch_array($result);
$postcode = $row['POSTCODE'];
/// gets postcode from appregistration table 

$sql=mysql_query("SELECT INCIDENT_ID, INVESTIGATION,TYPE_OF_INCIDENT,DESCRIPTION FROM appreports WHERE POSTCODE = '$postcode'");
//uses postcode from ppregistration table  to find info from appreports table 

while($row=mysql_fetch_assoc($sql)) $output[]=$row;

print(json_encode($output));

mysql_close();
?>
为什么不使用联接而不是运行两个查询:

SELECT `INCIDENT_ID`, `INVESTIGATION`, `TYPE_OF_INCIDENT`, `DESCRIPTION`
FROM `appreports`
INNER JOIN `appregistration` ON `appreports`.`POSTCODE` = `appregistration`.`POSTCODE`
WHERE `appregistration`.`MOBILE_NUMBER` = '$mobile'
例如:

<?php
$mobile = '07790807055';

mysql_connect("", "", "") or die(mysql_error());
mysql_select_db("") or die(mysql_error());

$sql = mysql_query("SELECT `INCIDENT_ID`, `INVESTIGATION`, `TYPE_OF_INCIDENT`, `DESCRIPTION`
                    FROM `appreports`
                    INNER JOIN `appregistration` 
                    ON `appreports`.`POSTCODE` = `appregistration`.`POSTCODE`
                    WHERE `appregistration`.`MOBILE_NUMBER` = '$mobile'");

while($row=mysql_fetch_assoc($sql))
{
    $output[] = $row;
}

print(json_encode($output));

mysql_close();
?>

撇开突出的SQL注入漏洞、对代码中冗余标点的可疑注释、不推荐使用的API以及调用mysql_fetch_数组时对默认参数的依赖、不必要的拆分查询,还有一些其他的东西,应该在任何代码评审中都会用到,但实际上不会影响功能性……您实际上并没有说在运行代码时会发生什么

第一个查询是否返回结果

通过mysql CLI或phpmyadmin运行查询时会发生什么情况

更新


如果我使用join-Parse-error:syntax-error,在第20行出现意外的“`”,则会出现此错误

好的,这是一个SQL注入错误导致的问题-我假设这是第20行:

$sql=mysql_query("SELECT INCIDENT_ID, INVESTIGATION,TYPE_OF_INCIDENT
      ,DESCRIPTION FROM appreports WHERE POSTCODE = '$postcode'");
$postcode包含一个或多个单引号。逃避它:

    $sql=mysql_query("SELECT INCIDENT_ID, INVESTIGATION,TYPE_OF_INCIDENT
      ,DESCRIPTION FROM appreports WHERE POSTCODE = '".
      mysql_real_escape_string($postcode) . "'");

将查询分配给第二个查询之前的字符串,并将其粘贴到此处$query2=选择事件ID、调查、事件类型、来自报告的描述,其中邮编=“$POSTCODE”;echo$query2$sql=mysql\u query$query2@mkaatman$sql可能是一个资源,不能转换为字符串。排序后,请查找数据库联接。谢谢mkaatman,这是输出资源id 4Null这是输出mkaarman选择事件id,调查,事件类型,appreports中的描述,其中POSTCODE='CF14'nulls这是我在第20行使用join Parse error时遇到的错误:语法错误,意外的'`',而且我希望输出为json,因为我在android应用程序中使用它。我在这里没有收到错误-你确定复制的所有内容都正确吗?输出仍然是json_encode…您还应该知道mysql_*已被弃用,您应该至少考虑使用mysqli。我处理了所有问题,我得到了Null感谢所有的帮助,我发现了问题,当我使用sql在数据库中添加新行时,它工作正常,但当我使用php时,它不工作哈哈