需要我的搜索栏php的帮助吗
我一直遵循这个链接作为搜索栏的指南 我是php和sql的初学者,请帮我做这个。 我不知道用sql语法做什么。 注意,错误是:第21行的C:\xampp\htdocs\login system\search.php中的未定义变量:q 提前谢谢需要我的搜索栏php的帮助吗,php,mysql,Php,Mysql,我一直遵循这个链接作为搜索栏的指南 我是php和sql的初学者,请帮我做这个。 我不知道用sql语法做什么。 注意,错误是:第21行的C:\xampp\htdocs\login system\search.php中的未定义变量:q 提前谢谢 <?php $con = mysql_connect('localhost','root',''); $db = mysql_select_db('accounts'); ?> <!DOCTYPE html> &
<?php
$con = mysql_connect('localhost','root','');
$db = mysql_select_db('accounts');
?>
<!DOCTYPE html>
<html>
<head>
<title> Search Form </title>
<link rel="stylesheet" type="text/css" href="css/stylesearch.css">
</head>
<body>
<form action = "search.php" method ="GET" id="searchForm">
<input type="text" name="q" id="searchBox" placeholder="Search Here" value="" /><input type="submit" id="searchBtn" value ="GO" />
</form>
<?php
$query = mysql_query("SELECT * FROM provider WHERE provider LIKE '%$q%' OR broker LIKE '%$q%' OR deductible LIKE '%$q%' OR deductible_waiver LIKE '%$q%' OR accredited_banks LIKE '%$q%' OR can_not_offer_mortgaged_with LIKE '%$q%' OR casa_eligibility LIKE '%$q%' OR depreciation LIKE '%$q%' OR special_quotes LIKE '%$q%' OR unit_age_limit LIKE '%$q%' OR provider_information LIKE '%$q%' OR provider_branches LIKE '%$q%' OR mmx_exclusive LIKE '%$q%' OR disclaimer LIKE '%$q%' OR accredited_shops LIKE '%$q%' OR roadside_assistance_number LIKE '%$q%' OR roadside_assistance_coverage LIKE '%$q%' OR check_addressee LIKE '%$q%' OR accounts_details LIKE '%$q%' OR cancellation_charge LIKE '%$q%'");
$num_rows = mysql_num_rows($query);
while($row = mysql_fetch_array($query))
{
$id = $row['id'];
$prov = $row['provider'];
$brok = $row['broker'];
$deduc = $row['deductible'];
$deduc_waiver = $row['deductible_waiver'];
$accre_banks = $row['accredited_banks'];
$mort = $row['can_not_offer_mortgaged_with'];
$casa_elig = $row['casa_eligibility'];
$depre = $row['depreciation'];
$s_quotes = $row['special_quotes'];
$age = $row['unit_age_limit'];
$prov_info = $row['provider_information'];
$prov_branch = $row['provider_branches'];
$mmx_exclusive = $row['mmx_exclusive'];
$disclaimer = $row['disclaimer'];
$accre_shops = $row['accredited_shops'];
$roadside_assist_no = $row['roadside_assistance_number'];
$roadside_assist_cov = $row['roadside_assistance_coverage'];
$check_addressee = $row['check_addressee'];
$acc_details = $row['accounts_details'];
$can_charge = $row['cancellation_charge'];
echo '<h3>' .$prov .'</h3><p>'. $brok.'<br>'. $deduc.'<br>'. $deduc_waiver.'<br>'. $accre_banks.'<br>'. $mort.'<br>'. $casa_elig.'<br>'. $depre.'<br>'. $s_quotes.'<br>'. $age.'<br>'. $prov_info.'<br>'. $prov_branch.'<br>'. $mmx_exclusive.'<br>'. $disclaimer.'<br>'. $accre_shops.'<br>'. $roadside_assist_no.'<br>'. $roadside_assist_cov.'<br>'. $acc_details.'<br>'. $check_addressee.'<br>'. $can_charge.'</p><br />';
}
?>
</body>
</html>
搜索表
你并不是在说你的问题是什么。不过,只要看看代码,就不会在mysqli查询中调用数据库,它应该是mysqli_查询($db,“SELECT…”),其中$db是mysqli_connect变量。php手册中有几个示例:。
正如mickmacusa上面所说的,如果您在后端添加“or die(mysqli_error($db)”,它将为您提供有关sql语法的更多信息
警告:mysql_查询、mysql_获取_数组、mysql_连接等扩展在PHP 5.5.0中被弃用,在PHP 7.0.0中被删除。
相反,应该使用MySQLi或PDO_MySQL扩展
1) 尝试使用mysqli.*
或PDO
prepared语句
2) 首先,遵循我的示例代码
3) 从何处获得变量$q。您必须将post值分配给$q变量,如$q=$\u GET['q'];否则您将得到$q未定义错误
//db connection
global $conn;
$servername = "localhost"; //host name
$username = "username"; //username
$password = "password"; //password
$mysql_database = "dbname"; //database name
//mysqli prepared statement
$conn = mysqli_connect($servername, $username, $password) or die("Connection failed: " . mysqli_connect_error());
mysqli_select_db($conn,$mysql_database) or die("Opps some thing went wrong");
$stmt = $conn->prepare("SELECT * FROM provider
WHERE provider LIKE %'".$q."'%
OR broker LIKE %'".$q."'%
OR deductible LIKE %'".$q."'%
OR deductible_waiver LIKE %'".$q."'%
OR accredited_banks LIKE %'".$q."'%
OR can_not_offer_mortgaged_with LIKE %'".$q."'%
OR casa_eligibility LIKE %'".$q."'%
OR depreciation LIKE %'".$q."'%
OR special_quotes LIKE %'".$q."'%
OR unit_age_limit LIKE %'".$q."'%
OR provider_information LIKE %'".$q."'%
OR provider_branches LIKE %'".$q."'%
OR mmx_exclusive LIKE %'".$q."'%
OR disclaimer LIKE %'".$q."'%
OR accredited_shops LIKE %'".$q."'%
OR roadside_assistance_number LIKE %'".$q."'%
OR roadside_assistance_coverage LIKE %'".$q."'%
OR check_addressee LIKE %'".$q."'%
OR accounts_details LIKE %'".$q."'%
OR cancellation_charge LIKE %'".$q."'%");
$stmt->execute();
$get_result =$stmt->get_result();
$row_count= $get_result->num_rows;
?>
<!DOCTYPE html>
<html>
<head>
<title> Search Form </title>
<link rel="stylesheet" type="text/css" href="css/stylesearch.css">
</head>
<body>
<form action = "search.php" method ="GET" id="searchForm">
<input type="text" name="q" id="searchBox" placeholder="Search Here" value="" /><input type="submit" id="searchBtn" value ="GO" />
</form>
<?php
if($row_count>0)
{
while($row = $get_result->fetch_assoc() )
{
$id = $row['id'];
$prov = $row['provider'];
$brok = $row['broker'];
$deduc = $row['deductible'];
$deduc_waiver = $row['deductible_waiver'];
$accre_banks = $row['accredited_banks'];
$mort = $row['can_not_offer_mortgaged_with'];
$casa_elig = $row['casa_eligibility'];
$depre = $row['depreciation'];
$s_quotes = $row['special_quotes'];
$age = $row['unit_age_limit'];
$prov_info = $row['provider_information'];
$prov_branch = $row['provider_branches'];
$mmx_exclusive = $row['mmx_exclusive'];
$disclaimer = $row['disclaimer'];
$accre_shops = $row['accredited_shops'];
$roadside_assist_no = $row['roadside_assistance_number'];
$roadside_assist_cov = $row['roadside_assistance_coverage'];
$check_addressee = $row['check_addressee'];
$acc_details = $row['accounts_details'];
$can_charge = $row['cancellation_charge'];
echo '<h3>' .$prov .'</h3><p>'. $brok.'<br>'. $deduc.'<br>'. $deduc_waiver.'<br>'. $accre_banks.'<br>'. $mort.'<br>'. $casa_elig.'<br>'. $depre.'<br>'. $s_quotes.'<br>'. $age.'<br>'. $prov_info.'<br>'. $prov_branch.'<br>'. $mmx_exclusive.'<br>'. $disclaimer.'<br>'. $accre_shops.'<br>'. $roadside_assist_no.'<br>'. $roadside_assist_cov.'<br>'. $acc_details.'<br>'. $check_addressee.'<br>'. $can_charge.'</p><br />';
}
}
$stmt->close();
$conn->close();
?>
</body>
</html>
//数据库连接
全球$conn;
$servername=“localhost”//主机名
$username=“username”//用户名
$password=“password”//密码
$mysql\u database=“dbname”//数据库名称
//mysqli编写的声明
$conn=mysqli_connect($servername、$username、$password)或die(“连接失败:”.mysqli_connect_error());
mysqli_选择db($conn,$mysql_数据库)或die(“Opps一些事情出错”);
$stmt=$conn->prepare(“从提供程序中选择*)
其中提供程序类似于%'“$q.”%
或者像%'“$q.”这样的经纪人%
或像“%”“$q.”这样的免赔额%
或免赔额豁免,如%'“$q.”%
或认可的银行,如%'“$q.”%
或者你不能提供抵押贷款,比如“$q.”
或casa_资格,如%'“$q.”%
或折旧,如“%”“$q.”%
或特殊的_引号,如%'“$q.”%
或单位年龄限制,如%“$q.”%
或提供程序_信息,如%'“$q.”%
或提供程序_分支,如%'“$q.”%
或mmx_独家版,如%'“$q.”%
或者像“%”“$q.””这样的免责声明%
或者像%'“$q.”这样的认证商店%
或路边援助数字,如“%”“$q.”%
或路边援助覆盖率,如%“$q.”%
或勾选收件人,如%'“$q.”%
或帐户详细信息,如%'“$q.”%
或取消收费,如“%”“$q.”“%”;
$stmt->execute();
$get_result=$stmt->get_result();
$row\u count=$get\u result->num\u行;
?>
搜索表
你有什么错误吗?如果你是一个初学者/刚刚开始学习——从把那些旧的mysql
函数扔进垃圾箱开始。使用mysqli
或pdo
。当事情不能按预期工作时,检查mysqli_错误和/或将生成的查询直接复制到数据库中,并查看它在结果集中提供了什么。另外,与
一样速度较慢,请尝试限制正在搜索的列。随着数据库表的增长,搜索过程将变慢。我能给出的最好建议是:观看不同的视频。更多建议。首先,mysql
函数已被弃用,在PHP7中根本无法工作。我建议您学习PDO,但您至少可以将它们升级到mysqli
函数。其次,您将原始$\u GET
数据直接输入SQL语句。了解准备好的语句以及如何防御SQL注入攻击。而且,正如@mickmackusa所建议的,找到一个不同的视频。可以在特定的栏目上搜索吗?例如,我搜索“hello”这个词,该词位于“special_quotes”列中。可能只有列special_quotes可以在数据库中搜索?您可以这样做:从提供程序中选择*,其中special_quotes可以是“%hello%”@JohnDaleSalgado