传递MySQL的空值

时间:2017-05-24 02:22:14

标签: php mysqli isnull

我正在尝试在搜索我的数据库时在php中传递一个空字段。目前这对我有用,但由于我是mysqlphp的新手,我希望能为我的项目提供替代或更好的解决方案。

if (isset($_POST['submit'])){
    $val1 = trim($_POST['tester']);
    if($val1 == NULL){$val1 = "IS NOT NULL";} else {$val1 = "= '$val1'";}
    $val2 = trim($_POST['test']);
    if($val2 == NULL){$val2 = "IS NOT NULL";} else {$val2 = "= '$val2'";}
}
require ('connect.php');
$query = "SELECT * FROM report WHERE Tester $val1 AND Test $val2";
$testerdb = mysqli_query($db,$query);

1 个答案:

答案 0 :(得分:1)

嗯,第一个问题是你没有检查你的$ _POST数据是否确实存在。

我建议您编写某种帮助程序,例如使用以下方法的Request类

public class Machine
{
    public Machine() { }

    public string Id { get; set; }
    public string machineName { set; get; }
    public string machineType { set; get; }
    public string category { set; get; }
    public string make { set; get; }
    public string modelNumber { set; get; }
    public string information { set; get; }
    public string ownersManualLocation { set; get; }
    public string safetyChecklistSchedule { set; get; }
    public string maintenanceService { set; get; }
    public DateTime registrationExpiry { set; get; }

    public Machine(string id, string machineName, string machineType)
    {
    }
}

对于您的示例,如果您使用public static function post($index) { return isset($_POST[$index]) ? $_POST[$index] : NULL; } public static function get($index) { return isset($_GET[$index]) ? $_GET[$index] : NULL; } 搜索多个字段,我建议您使用数组(AND),您可以添加字段($wheres = array();),然后您只需要检查你的数组是否为空。如果没有,请使用$wheres[] = "Tester = $val"函数将其内爆:implode

所以,完整的例子

$where = implode(' AND ', $wheres);

或者你可以google查询构建器

P.S。永远不要忘记逃避您要发送到数据库的数据:)