-3

这是我目前唯一遇到问题的代码部分

<?php
include('config.php');

$term = $_POST['term']; <----- this would be line 22 in the error

$sql = mysql_query("select * from customers where F_Name like '%$term%' or L_Name like '%$term%'     or H_Phone like '%$term%'"); 
if (mysql_num_rows($sql) <= 0) {
// no results
echo 'No results found!';
} else 
while ($row = mysql_fetch_array($sql)){
}   
?>

提前感谢您的帮助!

4

3 回答 3

2

当您的页面在浏览器中加载时,通常是通过 GET 方法完成的;当这种情况发生时,你的$_POST将是空的。

要仅在提交表单时执行搜索,您需要如下代码:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // do your search here
    $term = filter_input(INPUT_POST, 'term', FILTER_UNSAFE_RAW);
    if ($term !== null) {
        $stmt = $db->prepare('select * 
            from customers 
            where F_Name like ? or L_Name like ? or H_Phone like ?");
        $stmt->execute(array("%$term%", "%$term%", "%$term%"));
        $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
}
于 2013-04-03T02:53:41.517 回答
1

$_POST['term']最初转到该页面时未设置。

您需要做的是在尝试使用该变量之前检查该变量是否存在。

if (isset($_POST['term']))
{
    $term = $_POST['term'];
}
    else
{
    $term = 'something else';
}

或将所有这些包装在顶部,这样您就不会在数据库中插入一些随机值。

此外,您至少需要对MySQLiPDO友好。mysql不应使用扩展名。

于 2013-04-03T02:36:31.960 回答
0

用于$_POST[]设置变量意味着您来自先前的表单事务,该事务往往$_POST[]具有值,否则最终将不存在,可能导致错误发生

一般举个例子。

如果提交了这样的表格

<form method='post' action=''>
<input name='term' value='SampleValue'>
<input type='submit'>
</form>

你最终会得到$_POST['term']一个值为<input name='term'>

否则,如果不是

$_POST['term']将不存在并会生成一个ERROR

于 2013-04-03T02:47:11.303 回答