0
我試圖將兩個數據庫連接到一個MySQL查詢,它也很棒!SELECT使乘法數據庫白色相同的表en在做
之後,我嘗試在正確的數據庫中查找順序數據以獲取meta_value。
但它會混合meta_value $的第一個名字,有時會在行上重複它們。
如果我只是連接1個數據庫,他們會出來,因爲他們應該有人可以看到出了什麼問題?
<?php
$servername = "xxx";
$username = "xxx";
$password = "xxx";
$v1 = "_wp282";
$v2 = "_wp111";
$v3 = "_wp72";
$v4 = "_wp193";
$v5 = "_wp555";
$v6 = "_wp366";
$v7 = "_wp74";
$v8 = "_wp721";
$v9 = "_wp924";
$v10 = "_wp253";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
//Here I connect to both databases
$query103 = mysqli_query($conn, "SELECT * FROM
`$v1`.`wpd2_posts`
where post_status='wc-processing' or post_status='wc-completed'
or post_status='wc-failed' UNION
SELECT * FROM `$v2`.`wpd2_posts`
where post_status='wc-processing' or post_status='wc-completed'
or post_status='wc-failed' order by post_date DESC ") or die(mysqli_error($conn));
?>
<br>
<h2>Database 3</h2>
<table style="width: 100%">
<tr>
<td>ID</td>
<td>??</td>
<td>??</td>
<td>??</td>
<td>??</td>
<td>??</td>
</tr>
<?php
while ($row = mysqli_fetch_array($query103)) {
// Here I try to find what database the customer is on
$id2 = $row['ID'];
if ($row['ID'] == '') {
echo "intet id";
} else {
$query = mysqli_query($conn, "SELECT * FROM `$v1`.`wpd2_posts` where ID = '$id2' ORDER BY id") or die(mysqli_error($conn));
if (mysqli_num_rows($query) == '') {
$query = mysqli_query($conn, "SELECT * FROM `$v2`.`wpd2_posts` where ID = '$id2' ORDER BY id") or die(mysqli_error($conn));
if (mysqli_num_rows($query) == '') {
} else {
$version = "coalsmil_wp111";
}
} else {
$version = "coalsmil_wp282";
}
}
echo "<tr>";
echo "<td>" . $row['ID'] . "</td>";
echo "<td>" . $row['post_date'] . "</td>";
echo "<td>" . $row['post_status'] . "</td>";
//And here I try to get the data out
$querynavn = mysqli_query($conn, "SELECT meta_value FROM `$version`.`wpd2_postmeta` where meta_key='_shipping_first_name' and post_id='$id2' ") or die(mysqli_error($conn));
while ($row2 = mysqli_fetch_array($querynavn)) {
$fornavn = urldecode($row2['meta_value']);
}
echo "<td>" . $fornavn . "</td>";
echo "<td>" . $version . "</td>";
echo "<td>6</td>";
echo "</tr>";
}
?>
</table>
**警告**:使用'mysqli'時,您應該使用[參數化查詢](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和['bind_param' ](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢。 **不要**使用字符串插值或連接來完成此操作,因爲您創建了嚴重的[SQL注入漏洞](http://bobby-tables.com/)。 **不要**將'$ _POST','$ _GET'或**任何**用戶數據直接放入查詢中,如果有人試圖利用您的錯誤,這可能會非常有害。 – tadman
注意:'mysqli'的面向對象的接口明顯較少,使得代碼更易於閱讀和審計,並且不容易與陳舊的'mysql_query'接口混淆。在你過於投入程序風格之前,它是值得轉換的。例如:'$ db = new mysqli(...)'和'$ db-> prepare(「...」)' – tadman
但是提示避免關於服務器安全性的常見錯誤。顯示當前輸出和預期的示例。 – BitAccesser