Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MYSQL选择查询两个具有公共字段的表_Php_Mysql - Fatal编程技术网

PHP MYSQL选择查询两个具有公共字段的表

PHP MYSQL选择查询两个具有公共字段的表,php,mysql,Php,Mysql,我需要从具有相同列租约的两个表中获取记录。我使用下面的代码从$q等于lease列的表行中获取记录。这很好,但是我想从不同的表单元中获取记录,这些表单元在同一个select查询中也有一个lease列,并在while循环中使用所有这些记录。下面是我当前用于从一个表中提取数据的代码,请有人帮助我修改代码以从两个表中提取数据。这可能吗?还是我走错了方向?我试过寻找加入,但我似乎不能让我的头围绕它,尝试了许多例子,但似乎没有一个工作 $sql = "SELECT * FROM rows WHERE

我需要从具有相同列租约的两个表中获取记录。我使用下面的代码从$q等于lease列的表行中获取记录。这很好,但是我想从不同的表单元中获取记录,这些表单元在同一个select查询中也有一个lease列,并在while循环中使用所有这些记录。下面是我当前用于从一个表中提取数据的代码,请有人帮助我修改代码以从两个表中提取数据。这可能吗?还是我走错了方向?我试过寻找加入,但我似乎不能让我的头围绕它,尝试了许多例子,但似乎没有一个工作

    $sql = "SELECT * FROM rows WHERE lease = '".$q."'";
$result = mysqli_query($conn, $sql);


if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
echo "row " . $row["row_id"]. "Capacity" . $row["capacity"]. "<br>";*/


}

要从共享公共值的两个表中获取值,请使用联接

例如:

此查询将为您提供所有匹配的行,并排除不匹配的行

相反,如果希望从第一个表中获取所有行,以及从第二个表中获取匹配的行,请将内部联接更改为左联接

这将为您提供表1中的所有行、表2中的所有匹配行以及表2中行不匹配的空值


由于您使用的是PHP—如果表包含具有相同名称的其他字段,则需要在select查询中对它们进行别名,以使它们在结果集中都可用。例如,选择table1.somevalue作为值1,table2.somevalue作为值2

使用连接。$q是否来自用户输入?是的$q来自选择框。然后不要将其直接输入到查询中。使用事先准备好的陈述。这将为SQL注入打开大门。^^。很好,您正在使用mysqli,您还应该研究准备好的语句和参数绑定。感谢各位,修改我的代码以使用链接线程中指定的准备好的语句。当我没有在select语句的末尾添加WHERE lease=q子句时,这会起作用。我可以访问这两个表中的所有记录,但是我只需要那些从用户输入中=$q变量的记录。有没有办法做到这一点,或者我在你的回答中遗漏了什么。在你的回答之后应该去哪里。。。加入。请参考文档中的示例。
select *
  from table1
    inner join table2
      on table1.common_field = table2.common_field