gpt4 book ai didi

php - 基于多个变量和条件构建动态 MySQL 查询

转载 作者:行者123 更新时间:2023-11-29 08:03:09 24 4
gpt4 key购买 nike

我希望这个标题能够很好地表达这个问题。我正在尝试基于现有的多个 $vars 构建动态查询。我试图使用一个简单的 if/ifelse/else block 来完成这项工作,但似乎无法让它正常工作。第一个 if 语句相应执行,但第三个语句失败。我是 PHP 新手,所以我认为这是初学者的错误。我还相信很可能有一种更有说服力的方法来达到预期的结果。

基本上,用户在多个文本字段中输入一些内容。 3 个字段中只有一个需要包含值,但 2 个或所有 3 个字段也可以。如果字段中不存在该值,则应根据提供的值生成查询。我正在验证并为每个输入创建一个变量,而不是检查这些变量是否包含值或存在。

  //////////////////////////////////////////////////////

if(isset($_POST['inputName']) && $_POST['inputName'] != ""){
$inputName = preg_replace('#[^a-z 0-9?!]#i', '', $_POST['inputName']);
}

if(isset($_POST['inputState']) && $_POST['inputState'] != ""){
$inputState = preg_replace('#[^a-z 0-9?!]#i', '', $_POST['inputState']);
}

if(isset($_POST['inputCost']) && $_POST['inputCost'] != ""){
$inputCost = preg_replace('#[0-9]#i', '', $_POST['inputCost']);
}

///////////////////////////////////////////////////////

if (!empty($inputName) AND !empty($inputState) AND !empty($inputCost)){
$sqlCommand = "SELECT * FROM hciproject WHERE school_name LIKE '%$inputName%' AND school_state LIKE '%$inputState%' AND school_cost < '$inputCost'";
}
elseif (!empty($inputName) AND !empty($inputState)){
$sqlCommand = "SELECT * FROM hciproject WHERE school_name LIKE '%$inputName%' AND school_state LIKE '%$inputState%'";
}
elseif (!empty($inputName) AND !empty($inputCost)){
$sqlCommand = "SELECT * FROM hciproject WHERE school_name LIKE '%$inputName%' AND school_cost < '$inputCost'";
}
elseif (!empty($inputState) AND !empty($inputCost)){
$sqlCommand = "SELECT * FROM hciproject WHERE school_state LIKE '%$inputState%' AND school_cost < '$inputCost'";
}
else{
$searchOut .= "0 Results Found";
}


// Connect to DB
include_once("database_connection.php");

$query = mysql_query($sqlCommand) or die(mysql_error());
$count = mysql_num_rows($query);

///////////////////////////////////////////////////////

此外,我将创建仅包含一个变量的 elseif 语句。

任何有关此问题的帮助将不胜感激。

最佳答案

试试这个:

 $inputName = preg_replace('#[^a-z 0-9?!]#i', '',& $_POST['inputName']);
$inputState = preg_replace('#[^a-z 0-9?!]#i', '',& $_POST['inputState']);
$inputCost = preg_replace('#[0-9]#i', '',& $_POST['inputCost']);

$selectCondition = 1;
if($inputName) $selectCondition.= " and school_name LIKE '%$inputName%' ";
if($inputState ) $selectCondition.= " and school_state LIKE '%$inputState%' ";
if($inputCost ) $selectCondition.= " and school_cost < $inputCos ";

重要:

 & $_POST['inputName'] is equal to (isset($_POST['inputName']) && $_POST['inputName'] != "")

关于php - 基于多个变量和条件构建动态 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23279552/

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