如何将两个MySQL连接组合成一个MySQL连接?

时间:2016-02-11 01:06:32

标签: php mysql

我在一个.php文件中为同一个数据库提供了两个MySQL连接。

第二个连接基于第一个结果。

如何将两个连接组合成一个?请帮助&教我如何修改它?

第一次连接:

<?php
header('Content-Type: text/html; charset=utf-8');

$servername = "localhost";
$username = "abcabc";
$password = "12341234";
$dbname = "abc1234";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

// Logic data
$previous_page = ($_GET['crno'] - 1);
$next_page = ($_GET['crno'] + 1);


// select data

$sql    = 'SELECT * FROM ComData WHERE com_no = '. $_GET['crno'];
$result = $conn->query($sql);



if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        $pageTitle = $row['com_eng_name'] . $row['com_chi_name'];

        $com_no = $row['com_no'];   
        $br_no = $row['br_no'];     
        $com_eng_name = $row['com_eng_name'];
        $com_chi_name = $row['com_chi_name'];       
        $com_type = $row['com_type'];   
        $date_of_incorp = $row['date_of_incorp'];   
        $active_status = $row['active_status']; 
        $date_commenced_dormancy = $row['date_commenced_dormancy']; 
        $remarks = $row['remarks'];
        $date_of_dissolution = $row['date_of_dissolution']; 
        $register_charges = $row['register_charges'];       
        $name_history = $row['name_history'];       
        $phone = $row['phone'];     
        $email = $row['email'];     
        $address = $row['address'];     
        $website = $row['website'];     
        $background = $row['background'];           
        $update_time = $row['update_time']; 




    }
} else {
    echo "No Results";
}

$conn->close();
?>

第二次联系:

<?php
header('Content-Type: text/html; charset=utf-8');

$servername = "localhost";
$username = "abcabc";
$password = "12341234";
$dbname = "abc1234";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 



// select data for similar search

$string = "$com_eng_name";
$words = implode(' ', array_slice(explode(' ', $string ), 0, 2));


$sql = "SELECT * FROM ComData 
        WHERE com_eng_name REGEXP '$words'
        ORDER BY com_no 
        DESC 
        LIMIT 20";
$result = $conn->query($sql);


if ($result->num_rows > 0) {
    echo "<table><tr><th>CR No.</th><th>Company Name</th><th>Active Status</th></tr>";
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<tr><td>".$row["com_no"]."</td><td><a href='search.php?crno=".$row["com_no"]."' >".$row["com_eng_name"]." ".$row["com_chi_name"]."</a></td><td>".$row["active_status"]."</td></tr>";
    }
    echo "</table>";
} else {
    echo "0 results";
}
$conn->close();
?>

2 个答案:

答案 0 :(得分:0)

如果这2个代码都存在于同一个物理文件中,那么在两种情况下保持连接的变量都是$conn,你可以放弃第二次尝试建立与数据库的连接。

因此,只需从您调用Second Connection的代码中删除此代码,即此位

$servername = "localhost";
$username = "abcabc";
$password = "12341234";
$dbname = "abc1234";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

然后删除此行

$conn->close();

来自您调用First Connetion的代码段,因此在第二段代码运行之前不要关闭连接。

但是,实际上这两段代码是分开的.php文件。他们必须保持原样。

答案 1 :(得分:0)

目前还不清楚你的两个连接是否在同一页面中,以及你的两个查询是按顺序执行还是交替执行。

无论如何,如果查询在同一页面上,或者您想将它放在同一页面中,请确保您只能使用一个连接。

以这种方式启动脚本:

header('Content-Type: text/html; charset=utf-8');

$servername = "localhost";
$username = "abcabc";
$password = "12341234";
$dbname = "abc1234";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

然后,如果您必须执行两个查询,请以这种方式继续:

// Logic data
$previous_page = ($_GET['crno'] - 1);
$next_page = ($_GET['crno'] + 1);

// select data
$sql    = 'SELECT * FROM ComData WHERE com_no = '. $_GET['crno'];
$result = $conn->query($sql);
if ($result->num_rows > 0) {

    (...)

} else {
    echo "No Results";
}

// select data for similar search
$string = "$com_eng_name";
$words = implode(' ', array_slice(explode(' ', $string ), 0, 2));

(...)

$conn->close();

否则,如果查询仅在条件下执行,则以这种方式继续连接检查后:

if( /* Your Condition Here */ )
{
    // Logic data
    $previous_page = ($_GET['crno'] - 1);
    (...)
}
else
{
    // select data for similar search
    $string = "$com_eng_name";
    (...)
}

如果您想在任何不同的文件中使用连接,可以使用以下内容创建文件dbconnect.php

$servername = "localhost";
$username = "abcabc";
$password = "12341234";
$dbname = "abc1234";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

然后,在每个带有db查询的文件中,以这种方式包含它:

header('Content-Type: text/html; charset=utf-8');
include( 'dbconnect.php' );
// Logic data
$previous_page = ($_GET['crno'] - 1);
(...)

header('Content-Type: text/html; charset=utf-8');
include( 'dbconnect.php' );
// select data for similar search
$string = "$com_eng_name";
(...)

等...

请注意,根据“dbconnect.php”文件位置,您必须使用include( 'dbconnect.php' )更改include( '/Full/Or/Relative/Path/dbconnect.php' )