【发布时间】:2015-12-09 15:38:39
【问题描述】:
我写了一个在 phpmyadmin 中工作的 SQL 语句。我在同一台服务器上有两个数据库,我使用 INNERJOIN 连接它们并得到正确的结果。我正在用 php 构建它,到目前为止已经做了一些正常的查询并得到了正确的结果。我的数据库有一个包含,它连接到一个数据库,现在我想连接到两个,我不确定我如何在我的 php sql 语句中引用它。有人可以帮忙吗?
我有这个。
<?php
error_reporting(0);
include './includes/opendb.php';
extract($_POST);
$sql1 = mysql_query("SELECT f_clients.CLIENT_COMPANY, vtmastertrail.consultant, f_clients.CLIENT_CODE, vtcards.description, vtmastertrail.inspdate_start, vtmastertrail.inspdate_end, vtcards.typeofcard, vtcards.colour, vtcards.frequency, vtcards.priorityon, vtmastertrail.islive, f_clients.CLIENT_DEFAULTINSPECTIONSELL
FROM `f_clients`
INNER JOIN tcards.vtcards ON tcards.vtcards.client_code = f_clients.CLIENT_CODE
INNER JOIN tcards.vtmastertrail ON tcards.vtmastertrail.card_id = tcards.vtcards.id
WHERE tcards.vtmastertrail.consultant = '".$con_name."'
AND tcards.vtmastertrail.inspdate_start >= '".$from_date."'
AND tcards.vtmastertrail.inspdate_start <= '".$to_date."'");
echo "<table border='1' align='center'>
<tr>
<th>Consultant</th>
<th>Client Code</th>
<th>Client</th>
<th>Address</th>
<th>Inspection Start Date</th>
<th>Inspection End Date</th>
<th>Type Of T-Card</th>
<th>T-Card Colour</th>
<th>Frequency</th>
<th>Priority</th>
<th>Report Sent Out</th>
<th>Cost</th>
</tr>";
while($row = mysql_fetch_array($sql1))
{
echo "<tr>";
echo "<td>" . $row['consultant'] . "</td>";
echo "<td>" . $row['client_code'] . "</td>";
echo "<td>" . $row['title'] . "</td>";
echo "<td>" . $row['description'] . "</td>";
echo "<td>" . $row['inspdate_start'] . "</td>";
echo "<td>" . $row['inspdate_end'] . "</td>";
echo "<td>" . $row['typeofcard'] . "</td>";
echo "<td>" . $row['colour'] . "</td>";
echo "<td>" . $row['frequency'] . "</td>";
echo "<td>" . ($row['priorityon'] ? 'Yes' : 'No') . "</td>";
echo "<td>" . ($row['signedoff'] ? 'Yes' : 'No') . "</td>";
echo "<td>" . $row['CLIENT_DEFAULTINSPECTIONSELL'] . "</td>";
echo "</tr>";
}
echo "</table>";
}
我基本上没有从这个搜索中得到任何结果。
这是我的数据库文件。
<?php
// ** database connection string
$conn = mysql_connect("localhost", "#####", "########") or die ('I cannot connect to the database because: ' . mysql_error());
// ** Tcards database
mysql_select_db ("tcards");
我已更改隐藏凭据。我有另一个名为“test”的数据库,它是 f_clients 表所在的位置。这是在同一台服务器上,并具有相同的登录凭据。谁能帮帮我?
【问题讨论】:
-
你肯定不想要
extract($_POST);。这相当于从 PHP 中删除的“注册全局变量”,因为它存在巨大的安全风险。此外,您不应该在没有正确转义的情况下将任何数据放入 SQL 查询中。 -
谢谢,我似乎已经修复了它,我的查询中的错误似乎在 phpmyadmin 中有效,但在 php.ini 中无效。感谢您对提取功能的建议。用什么来代替它?
-
您应该直接使用
$POSTvar,而不是按照您的方式将值放入 SQL 查询中,而是使用准备语句。看看这个教程:markonphp.com/mysqli-select-prepared-statements
标签: php mysql inner-join