Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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 获取where子句中的所有值_Php_Mysql - Fatal编程技术网

Php 获取where子句中的所有值

Php 获取where子句中的所有值,php,mysql,Php,Mysql,我在这段代码中遇到了麻烦,如果用户从选择下拉菜单中选择了“全部显示”,我只想从表行中获取所有数据 这是选择菜单 所以,这个菜单从这个表中抓取数据,但是如果他选择了All,那么在选项值之间回显的合适代码是什么:) 如果用户选择“在下拉菜单中全部显示”,输入的正确代码是什么 你真的需要对你的输入进行消毒,至少用 关于您的实际问题:只需检查$speciality是否为空,并在不使用(speciality='$speciality')条件的情况下生成一个不同的查询。因为您的HTML引用了“special

我在这段代码中遇到了麻烦,如果用户从选择下拉菜单中选择了“全部显示”,我只想从表行中获取所有数据

这是选择菜单

所以,这个菜单从这个表中抓取数据,但是如果他选择了All,那么在选项值之间回显的合适代码是什么:)


如果用户选择“在下拉菜单中全部显示”,输入的正确代码是什么

你真的需要对你的输入进行消毒,至少用


关于您的实际问题:只需检查
$speciality
是否为空,并在不使用
(speciality='$speciality')
条件的情况下生成一个不同的查询。

因为您的HTML引用了“specialties”,而PHP引用了“regions”,所以我只想使用“regions”

    if ($region=="All regions" ){
        $sql = 'SELECT id, customer_name, seller_1_name, seller_2_name, FROM visits';
    } else {
        $region     = mysql_real_escape_string($_POST['region']);
        $date1      = mysql_real_escape_string($_POST['from_date']);
        $date2      = mysql_real_escape_string($_POST['to_date']);
        $product    = mysql_real_escape_string($_POST['product']);
        $speciality = mysql_real_escape_string($_POST['speciality']);
        $type       = mysql_real_escape_string($_POST['visit_type']);
        $sql        = "SELECT id, customer_name, seller_1_name, seller_2_name FROM visits Where (speciality ='$speciality') AND (visit_type ='$type') AND (product ='$product') AND (region ='$region') AND (visit_date BETWEEN '$date1' AND '$date2')";
    }

$result = mysql_query($sql); ## This line is new.
$num    = mysql_numrows($result);
$row    = mysql_fetch_array($result);

您的代码易受SQL注入攻击。您确实应该使用准备好的语句,将变量作为参数传递到语句中,而这些参数不会对SQL进行求值。如果您不知道我在说什么,或者不知道如何修复它,请阅读.mysql_real_escape_string已被弃用,应该使用PDO,或者至少我知道mysqli_*函数,但解释如何更改整个操作代码以使用PDO远远超出了问题的范围。这就是为什么我说“至少”。+1,因为我很快就发现了这种情况另外,@AlanFoster看到OP使用的
mysql\uquot>命令也被弃用,我看不出有什么问题。似乎他还在学习,因为这是一个基本问题,所以我猜安全性并不是atm的最高优先级mysql\u real\u escape\u字符串未被弃用是的,措辞错误,
mysql\u
命令未被弃用,只是高度不推荐。它们仍然可以支持较旧的应用程序。
if ($region=="All regions" ){


              $region=$_POST['""'];  
            }
            else ( $region=$_POST['region']);

            $date1 =$_POST['from_date'];
            $date2 = $_POST['to_date'];
            $product=$_POST['product'];
            $speciality=$_POST['speciality'];
            $type=$_POST['visit_type'];

sql="SELECT id, customer_name, seller_1_name, seller_2_name FROM visits Where (speciality ='$speciality') AND (visit_type ='$type') AND (product ='$product') AND (region ='$region') AND (visit_date BETWEEN '$date1' AND '$date2')";
$result=mysql_query($sql); ## This line is new.
$num=mysql_numrows($result);
$row = mysql_fetch_array($result);
    if ($region=="All regions" ){
        $sql = 'SELECT id, customer_name, seller_1_name, seller_2_name, FROM visits';
    } else {
        $region     = mysql_real_escape_string($_POST['region']);
        $date1      = mysql_real_escape_string($_POST['from_date']);
        $date2      = mysql_real_escape_string($_POST['to_date']);
        $product    = mysql_real_escape_string($_POST['product']);
        $speciality = mysql_real_escape_string($_POST['speciality']);
        $type       = mysql_real_escape_string($_POST['visit_type']);
        $sql        = "SELECT id, customer_name, seller_1_name, seller_2_name FROM visits Where (speciality ='$speciality') AND (visit_type ='$type') AND (product ='$product') AND (region ='$region') AND (visit_date BETWEEN '$date1' AND '$date2')";
    }

$result = mysql_query($sql); ## This line is new.
$num    = mysql_numrows($result);
$row    = mysql_fetch_array($result);