【发布时间】:2015-03-24 09:45:29
【问题描述】:
查询在 mysql 中运行良好,但在 php 中运行良好。 在 php 中实现内部联接后,我只得到了星期二的值。周一和周二有两张桌子。从星期一选择lab1,从星期二选择lab1,只显示星期二的lab1。
附:查询在 mysql 中运行。
<form action="lab.php" method="POST">
Check routine for : <select name="new">
<option name="lab1">LAB1</option>
<option name="lab2">LAB2</option>
<option name="lab3">LAB3</option>
<option name="lab4">LAB4</option>
</select>  
<input type="submit" value="Submit">
</form>
<?php
require 'conn.php';
if(isset($_POST['new'])&& !empty($_POST['new']))
{
$lab=$_POST['new'];
$lab=strtolower($lab);
$result = mysql_query("select monday.time,
monday.$lab,tuesday.$lab from monday inner join
tuesday where monday.time=tuesday.time");
echo "<table BORDER='1' width='50%' cellpadding='3'>
<tr>
<th colspan='7'><h2>$lab</h2></th>
</tr>
<tr>
<th>TIME</th>
<th>MONDAY</th>
<th>TUESDAY</th>
</tr>";
while($row = mysql_fetch_array($result))
{ echo "<tr>";
echo "<td>" .$row['time']. "</td>";
echo "<td>" .$row[$lab]. "</td>";
echo "<td>" .$row[$lab]. "</td>";
echo "</tr>";
}
echo "</table>";
}
?>
【问题讨论】:
-
您遇到了 sql 注入问题,使用未过滤/未列入白名单的用户输入作为列名非常危险。
-
我可以稍后处理sql注入,但是你能告诉我为什么查询在php中不起作用吗?
-
抛开你代码中的SQL注入漏洞,
echo "select monday.time, monday.$lab,tuesday.$lab from monday inner join tuesday where monday.time=tuesday.time" 的输出是什么? -
输出仅来自周二的能力,周二的列重复周一的列。您可以在此处查看输出表。 postimg.org/image/jp9t85roz
-
重复是因为您的迭代中有 $row[$lab] 而不是 $row['columnname']
标签: php mysql inner-join