Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要我的搜索栏php的帮助吗_Php_Mysql - Fatal编程技术网

需要我的搜索栏php的帮助吗

需要我的搜索栏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和sql的初学者,请帮我做这个。 我不知道用sql语法做什么。 注意,错误是:第21行的C:\xampp\htdocs\login system\search.php中的未定义变量:q 提前谢谢

<?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