用于网站的PHP mySQL搜索脚本

时间:2013-12-09 10:51:12

标签: php mysql sql database search

我非常感谢你试着帮助我。 我的问题是这个脚本:

<?php include("inc/incfiles/header.inc.php"); ?>
<?php
$list_user_info = $_GET['q'];
if ($list_user_info != "") { 
$get_user_info = mysql_query("SELECT * FROM users WHERE username='$list_user_info'");
$get_user_list = mysql_fetch_assoc($get_user_info);
$user_list = $get_user_list['username'];
$user_profile = "profile.php?user=".$user_list;
$profilepic_info = $get_user_list['profile_pic'];
if ($profilepic_info == "") {
$profilepic_info = "./img/avatar.png";
}
else {
$profilepic_info = "./userdata/profile_pics/".$profilepic_info;
}
if ($user_list != "") {
?>
<br>
<h2>Search</h2>
<hr color="#FF8000"></hr>
<div class="SearchList">
<br><br>
<div style="float: left;">
<a href="<?php echo $user_profile; ?>"><img src="<?php echo $profilepic_info; ?>"   height="50" width="50"></a>
</div>
<?php echo "<h1>".$user_list."</h1>"; ?>
</div>
<?php
}
else {
echo "<br><h3>User was not found</h3>";
}
}
else {
echo "<br><h3>You must specify a search query</h3>";
}
?>

我正在创建一个搜索脚本,它接收mysql数据库信息并显示与搜索查询相关的结果。我的脚本是上面的,但请记住,sql连接是在extern scipt中建立的。

问题是我希望脚本首先检查用户是否在用户名行中找到了搜索查询,然后从该用户获取entre信息并显示它。如果找不到用户名查询的用户,则应尝试将搜索查询与名称行进行比较,然后使用姓氏行进行比较。如果没有显示结果,则应返回带有错误的else语句,例如“没有用户wsas发现”

您诚挚的, Victor Achton

4 个答案:

答案 0 :(得分:1)

将查询作为Muhammet Arslan进行查询......但只计算行数会更快......

if(mysql_num_rows($get_user_info)){
    //not found
}

你应该添加一个&#34;限制1&#34;最后,如果你只对一个结果感兴趣(或没有结果)。

但请阅读有关准备好的陈述 pdo.prepared-statements.php

2013年应该如何做到这一点!

答案 1 :(得分:0)

你已经这样做了,但你可以在你的sql语句中使用“AND”或“OR”来改进它。

$get_user_info = mysql_query("SELECT * FROM users WHERE username='$list_user_info' or name = '$list_user_info' or last_name = '$list_user_info'");
$get_user_list = mysql_fetch_assoc($get_user_info);

if(empty($get_user_list))
{
echo "No User was found";
}

你应该控制$ list_user_info或者你可以攻击。

答案 2 :(得分:0)

这样的东西,但你不需要3个查询。你总是可以在mysql语句中使用OR

$handle1    = mysql_query("SELECT * FROM users WHERE username = $username");        // Username
if (($row   = mysql_fetch_assoc($handle1) !== false) {
    // username is found
} else {
    $handle2    = mysql_query("SELECT * FROM users WHERE name = $name");        // name
    if (($row   = mysql_fetch_assoc($handle2) !== false) {
        // name is found
    } else {
        $handle3   = mysql_query("SELECT * FROM users WHERE lastname = $lastname"); // Last name
        if (($row   = mysql_fetch_assoc($handle3) !== false) {
            // last name is found
        } else {
            // nothing found
        }
    }
}

答案 3 :(得分:0)

这里有一些改编自php.net的文件

连接

try {
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    foreach($dbh->query('SELECT * from FOO') as $row) {
        print_r($row);
    }
    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

获取数据

$stmt = $dbh->prepare("SELECT * FROM users where name LIKE '%?%'");
if ($stmt->execute(array($_GET['name']))) {
  while ($row = $stmt->fetch()) {
    print_r($row);
  }
}

剩下的就是你的编程...

做一些阅读,在不理解的情况下使用复制代码非常危险!