php - 通过 PHP 进行 SQL 查询

标签 php html mysql

我一直在从事一个 SQL 项目。我有一个包含两列的表格,以及一个搜索功能,要求用户以简单的形式输入用户名。然后我的 php 脚本会回显与该用户名关联的全名。

这是包含表单的 HTML 页面:

<html> 
    <head> 
       <title>Search  Contacts</title> 
    </head> 
<p><body> 
    <h3>Search  Contacts Details</h3> 
    <p>You  may search either by first or last name</p> 
        <form  method="post" action="search.php"  id="searchform"> 
            <input  type="text" name="username"> 
            <input  type="submit" name="submit" value="Search"> 
        </form> 
</body> 

这是与全名相呼应的 php 脚本:

<?php
   $con=mysqli_connect("localhost","root","hidden","users");

   if (mysqli_connect_errno())
   {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
   }
   $username=['username']
   $sql="SELECT * FROM `users` WHERE `user` LIKE $username";
   if ($result=mysqli_query($con,$sql))
   {
      // Get field information for all fields
      while ($fieldinfo=mysqli_fetch_field($result))
      {
          $username =$fieldinfo ['username'];
      }

      // Free result set
      echo $username;
  }
  mysqli_close($con);
?>

最佳答案

用户名是一个字符串,因此需要用引号引起来。

您还缺少分配给 $username 的行上的分号,并且您分配的值应为 $_POST['username']

如果查询失败,您应该显示包含失败原因的错误消息。

您只是回显最后一个匹配的用户名。您应该将 echo 语句移到循环内。

要对名称中包含 $username 的任何用户进行 LIKE 搜索,您需要在所使用的搜索字符串周围放置通配符 % 字符与LIKE

<?php
$con=mysqli_connect("localhost","root","hidden","users");
if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
$username=$_POST['username'];
$sql="SELECT * FROM `users` WHERE `user` LIKE '%$username%'";
if ($result=mysqli_query($con,$sql))
    {
        // Get field information for all fields
        while ($fieldinfo=mysqli_fetch_field($result))
            {
                $username =$fieldinfo ['username'];
                echo $username;
            }
    }
else 
    {
        die(mysqli_error($con));
    }
mysqli_close($con);
?>

但是如果您学会使用准备好的查询会更好。这是用这种风格重写的代码。

<?php
$con=mysqli_connect("localhost","root","hidden","users");
if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
$username=$_POST['username'];
$sql="SELECT username FROM `users` WHERE `user` LIKE CONCAT('%', ?, '%')";
$stmt = mysqli_prepare($con, $sql);
mysql_bind_param($stmt, "s", $username);
if ($result=mysqli_execute($stmt))
    {
        mysqli_bind_result($stmt, $username);
        // Get field information for all fields
        while (mysql_fetch($stmt)) {
            echo $username;
        }
    }
else
    {
        echo mysqli_error($con);
    }

mysqli_close($con);
?>

关于php - 通过 PHP 进行 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35096149/

相关文章:

html - 替代 html5 输出标签?

mysql - 如何在 Mysql 数据库中的单个查询中交换列的值

php - 存储不同类型的产品数据的正确方法是什么

php - 如何使用 php web 服务从 MySql 中的 2 个不同表中获取数据

php - 使用ajax代码删除上传的图片文件

PHP Mysql If 语句不起作用

php - 使用标签创建正则表达式?

javascript - 变量未在弹出错误中定义,但我已经定义了它

php - 如何处理 SQL 字段中的数组?

javascript - jquery resize() 不起作用?