我在一个.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();
?>
答案 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' )
。