Php 内部联接查询没有结果

Php 内部联接查询没有结果,php,mysql,inner-join,Php,Mysql,Inner Join,嗨,我有一个基本的搜索功能,有两个字段供用户输入测试名称和结果类型。我尝试过很多方法,比如使用下拉列表作为过滤器,但这是我发现的最简单的方法。我在搜索查询中对3个表使用内部联接。目前,并没有关于sql语法的错误出现,但也并没有结果。我在数据库上运行了查询,结果很好。如果我错过了一些愚蠢的事情,任何帮助都将不胜感激 if (isset($_GET['action']) and $_GET['action'] =='search') { $resultts = mysql_real_escape_

嗨,我有一个基本的搜索功能,有两个字段供用户输入测试名称和结果类型。我尝试过很多方法,比如使用下拉列表作为过滤器,但这是我发现的最简单的方法。我在搜索查询中对3个表使用内部联接。目前,并没有关于sql语法的错误出现,但也并没有结果。我在数据库上运行了查询,结果很好。如果我错过了一些愚蠢的事情,任何帮助都将不胜感激

if (isset($_GET['action']) and $_GET['action'] =='search')
{

$resultts = mysql_real_escape_string(htmlentities(trim($_GET['result'])));
$tests = mysql_real_escape_string(htmlentities(trim($_GET['test'])));


if (isset($resultts) and ($tests))
{
$sql = "SELECT p.fileName, p.mimeType, p.dateCreated, t.testName, r.resultType
    FROM 'product_logs' AS p 
    INNER JOIN 'result' AS r 
    ON p.resultID=r.resultID
    INNER JOIN 'test' AS t
    ON r.testID=t.testID
    WHERE t.testName LIKE '%$tests%'
    AND r.resultType LIKE '%$resultts%'
    ORDER BY r.dateCreated DESC";

$result = mysqli_query($sql) or die ("error in query");


}

while ($row = mysqli_fetch_array($result))
{
echo "<tr>
<td>".$row['fileName']."</td>
<td>".$row['mimeType']."</td>
<td>".$row['dateCreated']."</td>
<td>".$row['testName']."</td>
<td>".$row['resultType']."</td>
</tr>";

}
}
这是我使用的表格

echo "<form action= results_page.php method= get>";
echo"<p>Search Product Logs:</p>";

echo"<div>";
echo"<label for=text>Please Enter Test Name:</label>";
echo"<input type=text name=test id=text/>";
echo"<label for=text>Please Enter Result Type:</lable>";
echo"<input type=text name=result id=text/>";
echo"<input type=hidden name=action value=search/>";
echo"<input type=submit value=Search>";
echo"</div>";
echo"</form>";
echo”“;
echo“搜索产品日志:

”; 回声“; echo“请输入测试名称:”; 回声“; echo“请输入结果类型:”; 回声“; 回声“; 回声“; 回声“; 回声“;
测试
$resultts
$tests
是否存在,但随后在sql语句本身中使用
$resultt
$test
。此外,您正在测试
$tests
的值,而不是它是否已设置。请尝试以下方法:

if (isset($resultts) and isset($tests))
{
    $sql = "SELECT p.fileName, p.mimeType, p.dateCreated, t.testName, r.resultType
        FROM 'product_logs' AS p 
        INNER JOIN 'result' AS r 
        ON p.resultID=r.resultID
        INNER JOIN 'test' AS t
        ON r.testID=t.testID
        WHERE t.testName LIKE '%$tests%'
        AND r.resultType LIKE '%$resultts%'
        ORDER BY r.dateCreated DESC";

    $result = mysqli_query($sql) or die ("error in query");
}else{
    // Insert error type message or handling here.
}

可以将php生成的查询转储到屏幕上吗。不是结果,而是它发送到服务器的实际查询。呃,原谅我,我是个新手,如何做到这一点?
LIKE
中的
$resultts
$tests
结构缺少尾部
s
我刚刚更改了LIKE结构中的变量,仍然没有结果回显。您在SQL语句中使用了3个表,
产品日志
结果
,和
test
——但是您只列出了两个表,没有一个表是您命名的。你能列出所有三个表,并给它们贴上标签,这样我们就知道哪一个表是哪一个表了吗?谢谢你的回复,我修改了sql中的变量,但仍然没有结果。我刚刚意识到你也在测试$tests的值,而不是它是否被设置。相应地修改了答案中的代码。感谢您的建议,我刚刚尝试过,但仍然没有结果。这让我很困惑。但它是进入“if”部分还是“else”部分呢?目前没有其他部分用于错误处理,只是想先确保sql是正确的
if (isset($resultts) and isset($tests))
{
    $sql = "SELECT p.fileName, p.mimeType, p.dateCreated, t.testName, r.resultType
        FROM 'product_logs' AS p 
        INNER JOIN 'result' AS r 
        ON p.resultID=r.resultID
        INNER JOIN 'test' AS t
        ON r.testID=t.testID
        WHERE t.testName LIKE '%$tests%'
        AND r.resultType LIKE '%$resultts%'
        ORDER BY r.dateCreated DESC";

    $result = mysqli_query($sql) or die ("error in query");
}else{
    // Insert error type message or handling here.
}