gpt4 book ai didi

php - 在 MySQL 数据库中搜索多列的特定语法?

转载 作者:太空宇宙 更新时间:2023-11-03 11:03:49 24 4
gpt4 key购买 nike

我正在努力创建一个包含所有学生和相关信息的可搜索数据库(用于涉及管理 iPad 部署的大型项目)。数据库有 7 列:

  • 名字
  • 姓氏
  • 身份证号码
  • 年级
  • 毕业年份
  • student_email
  • 多布

我需要做的是,如果输入与行中的任何值匹配,则返回整行。

我正在使用的 PHP 是:

<?php 
$conn = mysql_connect ("localhost", "blmrvftl_ipdb", "ipad-db") or die ('I cannot connect to the database because: ' . mysql_error());
$selected = mysql_select_db ("blmrvftl_ipdb")
or die ("Could not select database because: " . mysql_error());


// PHP Search Script

$sql = "select * from phonebook, where first_name = '".$_GET['seek']."' or last_name = '". $_GET['seek'] ."' or id_number = '". $_GET['seek'] ."'";
//$sql = "select * from student_database, where first_name = '".$_GET['seek']."' or last_name = '". $_GET['seek'] ."' or id_number = '". $_GET['seek'] ."' or grade = '". $_GET['seek'] ."' or grad_year = '". $_GET['seek'] ."' or student_email = '". $_GET['seek'] ."' or dob = '". $_GET['seek'] ."'";
// $sql = "select * from student_database, where first_name = '".$_POST['seek']."' or last_name = '". $_POST['seek'] ."' or id_number = '". $_POST['seek'] ."' or grade = '". $_POST['seek'] ."' or grad_year = '". $_POST['seek'] ."' or student_email = '". $_POST['seek'] ."' or dob = '". $_POST['seek'] ."'";
$result = mysql_query($sql,$conn)or die (mysql_error());


if (mysql_num_rows($result)==0){
echo "No Match Found";
}else{
while ($row = mysql_fetch_array($result)){
echo "Name: " .$row['first_name']." ".$row["last_name"]."<br>";
echo "Student ID: ".$row['id_number']."<br>";
// echo "Department: ".$row['department_name']."<br>";
// echo "Directorate: ".$row['directorate_name']."<br>";
//echo "Site: ".$row['site_name']."<br>";
//echo "Phone #: ".$row['pb_tel_ext']."<br>";
//echo "Email Address: ".$row['pb_email_address']."<br>";
echo "<br>";
echo "---------------------------------------------------------------------"."<br>";
}
}

mysql_close();
?>

我遇到的问题是我无法完全正确地获取格式来搜索所有列。 (未注释的 $sql 行是我从该站点获取这段代码的原始版本的修改版本。)我得到的错误是:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where first_name = 'Elliott' or last_name = 'Elliott' or id_number = 'Elliott'' at line 1

最佳答案

我知道,当您开始开发时,您不希望事情变得太复杂,您最不关心的就是安全性。

但请时刻牢记

  • Facebook 从像您一样容易破解的学生数据库中窃取图片开始(有趣的事实)

  • 从不根据未经过滤的用户输入构建 SQL 脚本

  • 不要再使用 mysql_* 适配器,它正处于弃用过程中。

改用 mysqli 或 pdo_mysql。对于初学者来说,准备好的语句是有关输入转义的最佳选择。

http://www.php.net/manual/de/book.mysqli.php

http://www.php.net/manual/de/ref.pdo-mysql.php

关于您的问题,基本 SELECT 语句的 SQL 语法是

SELECT
fields
FROM
table
WHERE
field1 = 'filter1'
AND
field2 = 'filter2'

表格后没有逗号

关于php - 在 MySQL 数据库中搜索多列的特定语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13508931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com