首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用SQL查询中的用户输入

利用SQL查询中的用户输入
EN

Stack Overflow用户
提问于 2014-03-14 13:30:17
回答 1查看 58关注 0票数 0

我正在尝试更新一个给定用户输入的表。一旦用户点击表单上的submit,我希望查询的WHERE部分反映用户输入的邮政编码。到目前为止,我的情况是这样的,但不起作用。任何帮助都将不胜感激!

代码语言:javascript
复制
<form id="user-location" method="post" action="#">
      <input id="addressInput" name="addressInput" type="text">
      <input id="submit" onclick="searchLocations()" value="GO" type="button">
</form>

代码语言:javascript
复制
<?php
$con=mysqli_connect("localhost","######","######","######");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM Prospects WHERE zip = 'echo $_POST['addressInput']'");

echo "<table width='540' cellpadding='0' border='0' cellspacing='0'>
<tr>
<th>Under 4</th>
<th>5 - 9</th>
<th>10 - 14</th>
<th>15 - 17</th>
<th>18 - 20</th>
</tr>";

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['cy_pop_04'] . "</td>";
  echo "<td>" . $row['cy_pop_59'] . "</td>";
  echo "<td>" . $row['cy_pop_1014'] . "</td>";
  echo "<td>" . $row['cy_pop_1517'] . "</td>";
  echo "<td>" . $row['cy_pop_1820'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysqli_close($con);
?>
EN

回答 1

Stack Overflow用户

发布于 2014-03-14 13:49:26

<input id="submit" onclick="searchLocations()" value="GO" type="button">更改为<input id="submit" value="GO" type="submit" name="submit">,然后使用条件语句。

即:if(isset($_POST['submit']))

这是一个准备好的语句方法。

您现在所做的(或打算使用的)方式将使您对SQL injection开放。

代码语言:javascript
复制
<?php
$con=mysqli_connect("localhost","######","######","######");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

if(isset($_POST['submit'])){
$zip = $_POST['addressInput'];

if($query = $con->prepare("SELECT * FROM Prospects WHERE zip=?")){
    $query->bind_param("s", $zip);
    $query->execute();
}

echo "<table width='540' cellpadding='0' border='0' cellspacing='0'>
<tr>
<th>Under 4</th>
<th>5 - 9</th>
<th>10 - 14</th>
<th>15 - 17</th>
<th>18 - 20</th>
</tr>";

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['cy_pop_04'] . "</td>";
  echo "<td>" . $row['cy_pop_59'] . "</td>";
  echo "<td>" . $row['cy_pop_1014'] . "</td>";
  echo "<td>" . $row['cy_pop_1517'] . "</td>";
  echo "<td>" . $row['cy_pop_1820'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

} // closing brace for if(isset($_POST['submit']))

mysqli_close($con);
?>

脚注:

不要这样做或使用:

代码语言:javascript
复制
WHERE zip = 'echo $_POST['addressInput']'
             ^^^^        ^            ^

在使用prepared statements函数时,使用mysqli_*总是更好。

  • 关于使用准备好的语句的Here is a tutorial
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22406423

复制
相关文章

相似问题

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