PDO Prepared Statement和SQL LIKE多个值

时间:2017-06-30 03:40:20

标签: php sql pdo prepared-statement parameterized

我有一个搜索表单,用户可以在其中搜索序列号或产品名称。

这是我的代码:

<?php
require_once "pdo_rothConn.php";

if (isset($_POST['searchText'])){

$sql = "SELECT m_ipdb, m_name FROM machine WHERE 'm_ipdb' LIKE :number OR 'm_name' LIKE :name";
$stmt = $dbh->prepare($sql);
$stmet->execute(array(
    ':number' => $_POST['searchText'],
    ':name' => $_POST['searchText']));

while ( $row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
 echo($row['m_ipdb']);
 echo($row['m_name']);
}
?>

<p>Search for a Machine</p>
 <form method="post">
 <table width="500" border="1">
 <tr>
  <td>Enter IPDB Number or Name:</td>
  <td><input name="searchText" type="text" id="searchText" /></td>
 </tr>
 <tr>
  <td colspan="2"><input type="submit" value="Search Database"></td>
  <td><a href="#">Cancel</a></p></td>
 </tr>
  </table>
  </form>
  </body>
  </html>

首先,是否有一种更简洁的方法可以编写我的SQL语句,因为我搜索的$ _POST值是相同的?我不确定我的SQL语句中是否还有多个LIKE语句的错误。

截至目前,生成的页面显示为空白,根本无法正常工作。我想过将代码拆分成页面和处理页面而不是后页面。我被卡住了。但在我了解PDO并准备好语句并获得反馈以了解准备/参数化语句之前,我问了这个问题。生成的代码是否也能正确地防止SQL注入?

感谢。

1 个答案:

答案 0 :(得分:2)

$ stmet-&gt;执行到$ stmt-&gt;执行?