如何使用 PHP 表单从多个表中检索数据?

Posted

技术标签:

【中文标题】如何使用 PHP 表单从多个表中检索数据?【英文标题】:How to retrieve data from multiple tables using a PHP form? 【发布时间】:2015-07-08 14:33:52 【问题描述】:

我想使用点运算符/连接从多个表中检索数据,其中参数是从 html/php 表单传递的。

HTML 代码

<input name="rollno" type="text" placeholder="Roll Number" required>
<input name="submit_view_details" type="submit" value="Proceed">

PHP 代码

if(isset($_POST['submit_view_details']))

    $rollno = (int) $_POST['rollno'];
    $query = "select * from table1, table2 where table1.$rollno=table2.$rollno";
    $result=mysqli_query($connection,$query);

如果在浏览器中输入1 并回显此查询,则如下所示: select * from table1, table2 where table1.1=table2.1

尽管表中有数据,但没有提取任何行。

仅当查询如下所示时才有效: select * from table1,table2 where table1.rollno=table2.rollno

但是,在这种情况下,它会获取所有行,但我只需要用户在上述表单中输入的 rollno 行。

我只是无法解决这个问题。帮助将不胜感激。谢谢!

【问题讨论】:

试试这个 $query = "select * from table1, table2 where table1.rollno=table2.rollno AND table1.rollno = $rollno"; @GaneshPatil 是的。我只是想念那个。谢谢 【参考方案1】:
foreach ($pieces_2 AS $value) 
         $pieces_3[] ="(CONCAT_WS('|',$presql2) like '%$value%')";      //concat all columns from one table
 
 $serch_jyouken = implode(" and ",$pieces_3);       // for multiple keywords                    
 $result1 = mysqli_query($connection, "select p.p_no from pfr_data p where (" .$serch_jyouken .")");
 $res1 = array();
 while($r1 = mysqli_fetch_array($result1)
         $res1[] = $r1['p_no'] ;        //fetch primary key from table and store it into array 
 
 foreach ($pieces_2 AS $value)             
         $pieces_4[] ="(CONCAT_WS('|',$presql3) like '%$value%')";      // same as above
 
 $serch_jyouken1 = implode(" and ",$pieces_4);
 $result2 = mysqli_query($connection, "select p2.p_no from pfr_mod_inform p2 where (" .$serch_jyouken1 .")" );
$res2 = array();
 while($r2 = mysqli_fetch_array($result2))                                                                               
         $res2[] = $r2['p_no'];
 
 $res_mrg = array_merge($res1 , $res2);     //merge array
 $result = implode("','",$res_mrg );        // array to sring
 $sql5 = $presql ." from pfr_data p where p.p_no in ('$result') order by p.section_p,p.status,p.no";

【讨论】:

这是一个很长的方法,但我相信它会有所帮助,我会在一秒钟内给出结果【参考方案2】:

你应该像这样使用 join

$query = "SELECT tbl1.*, tbl2.* 
          FROM tbl1 
          INNER JOIN tbl2 ON tbl1.id = tbl2.id 
          WHERE tbl1.column = value ";

【讨论】:

【参考方案3】:

你需要加入

从这里获取连接的参考,

我相信它会有所帮助

http://www.tutorialspoint.com/mysql/mysql-using-joins.htm

【讨论】:

没有 mysqli 或 mysql JOINS 之类的东西。 JOINS 只是标准 SQL。 如果我的回答有帮助,您能否将其标记为有用,对其他人也有帮助【参考方案4】:

使用 AND 关键字指定卷号。

SELECT * FROM table1, table2 WHERE table1.rollno = table2.rollno 
AND table1.rollno = $rollno;

您可以像这样使用关键字JOIN

SELECT * FROM table1 NATURAL JOIN table2 
WHERE rollno = $rollno;

【讨论】:

以上是关于如何使用 PHP 表单从多个表中检索数据?的主要内容,如果未能解决你的问题,请参考以下文章

多个条目同名html表单

如何使用公共列从多个表中检索数据

如何从多个聚合表中检索数据?

如何使用 ajax 和 php 从 db 中检索数据?

如何使用 Fetch API 从表单中检索和发送数据?

如何使用spring boot将数据从一个html表单传递到多个表