首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从第二个表返回搜索结果

从第二个表返回搜索结果
EN

Stack Overflow用户
提问于 2013-01-13 22:01:45
回答 1查看 99关注 0票数 1

我有两张桌子,化学品和消耗品。“化学品”存储所有关于化学品的一般信息(配方、安全等),“消耗品”存储各种房间的库存和位置等信息。公共字段是"CAS“(化学品摘要服务注册号-数字和连字符的组合)。

我想搜索“化学品”表,并从两个表中返回信息

问题#1 -我应该在数据库(Navicat)中加入它们,还是只通过php查询?

问题#2 -为什么下面的代码不能工作?

代码语言:javascript
复制
$item = $_POST['item'];

$chem = mysql_query("
SELECT * 
FROM Chemicals
INNER JOIN Consumables 
ON Chemicals.Name_Chem1 = '%$item%'");

while ($row = mysql_fetch_array($chem)){

echo
"<table border='0'>
<tr class='content'>
<th>Name</th>
<th>Quantity</th>
<th>GHS Code</th>
<th>Formula</th>
<th>CAS</th>

</tr>";

while($row = mysql_fetch_array($chem))
{

 echo "<tr>";

echo "<td class='content'>" . $row['Consumables.Name'] . "</td>";
echo "<td class='content'>" . $row['Consumables.Quantity'] . "</td>";
echo "<td class='content'>" . $row['Chemicals.GHS_1'] . "</td>";
echo "<td class='content'>" . $row['Chemicals.Formula'] . "</td>";
echo "<td class='content'>" . $row['CAS'] . "</td>";
echo "</tr>";
}
echo "</table>";
}
EN

回答 1

Stack Overflow用户

发布于 2013-01-13 22:03:53

A1。)加入他们吧,MySQL

A2。)既然您已经提到它们的公共列被称为CAS,那么您应该在ON子句中定义它们,例如。

代码语言:javascript
复制
SELECT  a.*, b.*
FROM    Chemicals a
        INNER JOIN Consumables b
            ON a.CAS = b.CAS
WHERE   a.Name_Chem1 = '%$item%'

顺便说一句,如果值来自外部,则查询容易受到SQL Injection的攻击。请看下面的文章,了解如何预防它。通过使用PreparedStatements,您可以避免使用单引号将值引起来。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14304202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档