PHP搜索脚本从mysql中提取客户数据

时间:2015-08-12 04:14:12

标签: php mysql

我正在尝试在自己的客户门户网站中构建一个简单的搜索脚本,我正在尝试将其构建为通过手机ESN进行搜索。我对php不是很有经验,所以我可能会错过一些小问题,或者犯一个小错误。

无论如何,当你输入手机的任何esn并点击搜索时,它根本没有显示任何结果。这是我正在使用的简单脚本

<?php
$dbserv='********';
$dbuser='********';
$dbpass='********';
$dbdata='********';
$link = mysql_connect($dbserv, $dbuser, $dbpass);
if (!$link) {    die('Could not connect: ' .                mysql_error());}mysql_select_db($dbdata);

?> 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
<form action="" method="post">  
Search: <input type="text" name="esn" /><br />  
<input type="submit" value="Submit" />  
</form>  

<?php
if (!empty($_REQUEST['esn'])) {

$esn = mysql_real_escape_string($_REQUEST['esn']);     

$sql = "SELECT * FROM phones where phoneserial LIKE '%".$esn."%'"; 
$r_query = mysql_query($sql);

while ($row = mysql_fetch_array($r_query)){  
echo 'ESN: ' .$row['phoneserial'].'<br>';  
}  

}
?>
</body>
</html>

我注意到我之前在这行中犯了一个错误

$esn = mysql_real_escape_string($_REQUEST['esn']); 

我喜欢这样

$term = mysql_real_escape_string($_REQUEST['esn']);

然后当你输入一个以A10000开头的14位esn时,它实际上会显示我们数据库中的每个esn而不是搜索到的那个esn,我不知道为什么。

请原谅我,如果这是跛脚,仍在努力学习

3 个答案:

答案 0 :(得分:2)

如果$esn未定义,您将搜索纯通配符(%%),它将匹配每条可能的记录。看一下这段代码就不那么令人惊讶了:

$sql = "SELECT * FROM phones where phoneserial LIKE '%".$esn."%'";

只需删除$esn,因为您没有定义$esn,而是使用$term

你真的不应该再使用mysql_函数了。学习如何使用mysqli或PDO和预处理语句而不是转义字符串函数。

答案 1 :(得分:1)

如果你想只找到一个严格的匹配,你应该用这个

替换你的查询
$urls = array(
    "http://www.google.com",
    "https://drive.google.com",
    "https://www.youtube.com",
    "https://www.facebook.com/me"
);

答案 2 :(得分:0)

请勿使用mysql,请使用Mysqli

  

PHP扩展自PHP 5.5.0起已弃用,自PHP 7.0.0起已被删除

最终井表格代码是

<?php
    $dbserv='********';
    $dbuser='********';
    $dbpass='********';
    $dbdata='********';
    $link = mysqli_connect($dbserv, $dbuser, $dbpass,$dbdata);

    if (!empty($_POST['esn'])) {

        $esn = mysqli_real_escape_string($link$_POST['esn']);

        $sql = "SELECT * FROM phones where phoneserial LIKE '%".$esn."%'";;
        $r_query = mysqli_query($link,$sql);

        while ($row = mysqli_fetch_array($r_query))
        {
            echo 'ESN: ' .$row['phoneserial'].'<br>';
        }

    }
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
<form action="" method="post">
    Search: <input type="text" name="esn" /><br />
    <input type="submit" value="Submit" />
</form>

</body>
</html>