Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.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 5.3上准备选择类型的错误请求_Php - Fatal编程技术网

在PHP 5.3上准备选择类型的错误请求

在PHP 5.3上准备选择类型的错误请求,php,Php,我正在尝试进行准备类型选择,但它不起作用,我看不到错误在哪里 感谢您的帮助和解释:) 试试看{ $sql=“从'eq_base'中选择*”; $sql.=“其中`eq\u base`.`DateAchat`>=$sel\u date或`eq\u base`.`DateAchat`=\'0000-00-00\”; 如果(!(“$sel_-type”==99999)){$sql.=”和`eq_-base`.`type`=:sel_-type”;} 如果(!($sel_etat==99999)){$

我正在尝试进行准备类型选择,但它不起作用,我看不到错误在哪里

感谢您的帮助和解释:)

试试看{
$sql=“从'eq_base'中选择*”;
$sql.=“其中`eq\u base`.`DateAchat`>=$sel\u date或`eq\u base`.`DateAchat`=\'0000-00-00\”;
如果(!(“$sel_-type”==99999)){$sql.=”和`eq_-base`.`type`=:sel_-type”;}
如果(!($sel_etat==99999)){$sql.=“和`eq_base`.`etat`=sel_etat”}
如果(!empty(“$sel_modele”){$sql.=“和`eq_base`.`modele`LIKE%:sel_modele%”;}
如果(!empty(“$sel_fourniseur”){$sql.=”和`eq_base`.`fourniseur`LIKE%:sel_fourniseur%;}
$sql.=“按'eq_base`.'cle`'排序”;
变量转储($sql);
$db=数据库::getInstance();
$req=$db->prepare($sql);
$req->bindValue(“:选择日期”,“选择日期”);
$req->bindValue(':sel_类型',$sel_类型);
$req->bindValue(':sel_etat',$sel_etat);
$req->bindValue(':sel_modele',$sel_modele);
$req->bindValue(':sel_Fourniseur',$sel_Fourniseur);
$req->execute();
$temp=$req->fetchAll();
//$updated=$req->rowCount();
}捕获(例外$e){
错误日志($e);
抛出新的异常(“这是一个错误,是一个错误,是一个错误,是一个错误,是一个错误,是一个错误。”);
}

}
首先,您有一些语法错误,比如在if语句
if(!(“$sel_type”==99999))
中重复引用变量,以及忘记将
放在
sel_etat
之前

其次,您正在创建查询dynamicali,但是您正在绑定所有变量。您应该进行与生成查询时相同的检查,以确保只绑定查询中存在的变量

像这样的东西应该有用

try{
    $sql  = " SELECT * FROM `eq_base`";
    $sql .= " WHERE (`eq_base`.`DateAchat` >= ':sel_date' or `eq_base`.`DateAchat` = '0000-00-00') ";
    if (($sel_type!=99999))        { $sql .= " AND (`eq_base`.`Type` = ':sel_type')"; }
    if (($sel_etat!=99999))        { $sql .= " AND (`eq_base`.`Etat` = ':sel_etat')"; }
    if (!empty($sel_modele))      { $sql .= " AND (`eq_base`.`Modele` LIKE '%:sel_modele%')"; }
    if (!empty($sel_fournisseur)) { $sql .= " AND (`eq_base`.`Fournisseur` LIKE '%:sel_fournisseur%')"; }
    $sql .= " ORDER by `eq_base`.`cle`";
    var_dump($sql);
    $db = Database::getInstance();
    $req = $db->prepare($sql);
    $req->bindValue(':sel_date',$sel_date);
    if (($sel_type!=99999)){
        $req->bindValue(':sel_type',$sel_type);
    }
    if (($sel_etat!=99999)) {
        $req->bindValue(':sel_etat',$sel_etat);
    }
    if (!empty($sel_modele)){
        $req->bindValue(':sel_modele',$sel_modele);
    }
    if (!empty($sel_fournisseur)){
        $req->bindValue(':sel_fournisseur',$sel_fournisseur);
    }
    $req->execute();
    $temp = $req->fetchAll();  
    //$updated = $req->rowCount();
}
catch (Exception $e) {
    error_log($e);
    throw new Exception("Une erreur s'est produite lors de la création de l'équipement informatique.");
}

是的,Dimitris我的代码在下面,我的日志错误也在下面

试试看{
$sql=“从'eq_base'中选择*”;
$sql.=“(其中'eq\u base`.'DateAchat`>=:sel\u date或'eq\u base`.'DateAchat`=\'0000-00-00\”);
如果($sel_-type!==99999){$sql.=”和`eq_-base`.`type`=:sel_-type”}
如果($sel_-etat!==99999){$sql.=“和`eq_-base`.`etat`=:sel_-etat”}
if(!(空($sel_modele)){$sql.=“和`eq_base`.`modele`LIKE:sel_modele”;}
if(!(空($sel_fourniseur)){$sql.=”和`eq_base`.`fourniseur`LIKE:sel_fourniseur”;}
$sql.=“按'eq_base`.'cle`'排序”;
$db=数据库::getInstance();
$req=$db->prepare($sql);
var_转储($req);
$req->bindValue('sel_日期',$sel_日期);
如果($sel_type!==99999){
$req->bindValue('sel_类型',$sel_类型);
}
如果($sel_etat!==99999){
$req->bindValue('sel_etat',$sel_etat);
}
如果($sel_modele!==99999){
$req->bindValue('sel_modele','%.$sel_modele'%');
}
如果($sel_fourniseur!==99999){
$req->bindValue('sel_Fourniseur','%'。$sel_Fourniseur'%');
}
$req-execute();
$resultat=$req->fetchAll();
}捕获(例外$e){
错误日志($e);
抛出新的异常(“这是一个错误,是一个错误,是一个错误,是一个错误,是一个错误,是一个错误。”);
}

}
sel_etat中的bind变量缺少
,另外,当您动态包含SQL的各个组件时,这包括存在哪些绑定变量。因此,您可能绑定到了语句中没有的变量。在构建查询的第二行中,您的查询中有一个PHP变量
$sel_date
,周围没有引号,但它可能需要它。似乎您有一个引用问题?我的建议是不要一次编写一个复杂的查询,而是从简单、测试、更正开始,然后从那里慢慢构建它。这将防止您陷入甚至不了解自己的代码可能有什么问题的情况。您正在使用或查询中,之后可能会出现大量and。尝试将其放在括号中:检查我的更新答案,我在querywhat中为值添加了单引号,这是
var\u dump($sql)的输出?var_dump($sql)=字符串(180)“从eq_base中选择*,其中(eq_base.DateAchat>=:sel_date或eq_base.DateAchat=“0000-00-00”)和eq_base.Type=:sel_Type和eq_base.Etat=:sel_Etat ORDER by eq_base.cle”和var_dump($resultat)=是一个空数组
$req-execute()应该是
$req->execute()这一次,代码向我加载表,但我不恢复任何数据,我使用未准备好的请求来恢复数据