Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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 将th值设为NULL,如果为空,则不执行where_Php_Mysql_Where - Fatal编程技术网

Php 将th值设为NULL,如果为空,则不执行where

Php 将th值设为NULL,如果为空,则不执行where,php,mysql,where,Php,Mysql,Where,我现在: $inhoud = $_POST['inhoud']; if($inhoud == "") { echo $inhoud; $inhoud = NULL; echo $inhoud; } $sql = 'SELECT DISTINCT bestanden.id AS id, bestanden.uploader AS uploader, bestanden.name AS name,

我现在:

$inhoud = $_POST['inhoud'];
if($inhoud == "") {
    echo $inhoud;
    $inhoud = NULL;
    echo $inhoud;
}

$sql = 'SELECT DISTINCT bestanden.id AS id,
               bestanden.uploader AS uploader,
               bestanden.name AS name,
               bestanden.mime AS mime,
               bestanden.size AS size,
               bestanden.created AS created,
               zoeken.open_id AS open_id,
               zoeken.woord AS woord
        FROM bestanden
        LEFT JOIN zoeken ON bestanden.id = zoeken.open_id 
        WHERE zoeken.woord = "' . $inhoud . '" AND
              bestanden.name LIKE "%' . $_POST['naam'] . '%" AND
              bestanden.mime LIKE "%' . $_POST['formaat'] . '%"
              AND bestanden.created LIKE "%' . $_POST['datum'] . '%";';
$result = mysql_query($sql);
但是当我搜索时,$inhoud是空的,我没有得到任何结果,因为那里没有空的(“”)(inhoud)空间。可以在我的mysql\u查询中使用if或其他内容吗?

使用空函数

    $sql = 'SELECT DISTINCT bestanden.id AS id, bestanden.uploader AS uploader, bestanden.name AS name, bestanden.mime AS mime, bestanden.size AS size, bestanden.created AS created, zoeken.open_id AS open_id, zoeken.woord AS woord FROM bestanden LEFT JOIN zoeken ON bestanden.id = zoeken.open_id 
    WHERE 1=1';
if(!empty($inhoud))
    $sql.=' AND zoeken.woord="' . $inhoud . '"';
$sql.=' AND bestanden.name LIKE "%' . $_POST['naam'] . '%" AND bestanden.mime LIKE "%' . $_POST['formaat'] . '%" AND bestanden.created LIKE "%' . $_POST['datum'] . '%"';
$result = mysql_query($sql);
empty($inhound);
看这里:

也许是斯特伦()

。它们不再得到维护,并且已经开始使用。看到了吗?相反,学习,并使用,或-将帮助您决定哪一个。如果您选择PDO

您可以尝试以下方法:

$inhoud = $_POST['inhoud'];
if ($inhoud == "") {
    echo $inhoud;
    $inhoud = NULL;
    echo $inhoud;
}

$sql = 'SELECT DISTINCT bestanden.id AS id,
               bestanden.uploader AS uploader,
               bestanden.name AS name,
               bestanden.mime AS mime,
               bestanden.size AS size,
               bestanden.created AS created,
               zoeken.open_id AS open_id,
               zoeken.woord AS woord
        FROM bestanden
        LEFT JOIN zoeken ON bestanden.id = zoeken.open_id 
        WHERE ';
if(!empty($inhoud)) {
    $sql .= 'zoeken.woord = "' . $inhoud . '" AND';
}
$sql .= 'bestanden.name LIKE "%' . $_POST['naam'] . '%" AND
         bestanden.mime LIKE "%' . $_POST['formaat'] . '%"
         AND bestanden.created LIKE "%' . $_POST['datum'] . '%";';

$result = mysql_query($sql);

首先,您不应该假设在任何情况下都设置了
$\u POST[…]
(除非您已经检查了是否已设置)。正确的用法是:

$inhoud = null:
if( isset( $_POST['inhound'])){
    $inhound = trim( $_POST['inhound']); // Trim to prevent strings like "    "
    if( strlen( $inhound) < 1){
        $inhound = null;
    }
}

尝试使用mysqli而不是mysql。
$inhoud = null:
if( isset( $_POST['inhound'])){
    $inhound = trim( $_POST['inhound']); // Trim to prevent strings like "    "
    if( strlen( $inhound) < 1){
        $inhound = null;
    }
}
$sql = 'SELECT DISTINCT bestanden.id AS id, bestanden.uploader AS uploader,
            bestanden.name AS name, bestanden.mime AS mime,
            bestanden.size AS size, bestanden.created AS created,
            zoeken.open_id AS open_id, zoeken.woord AS woord
       FROM bestanden
       LEFT JOIN zoeken ON bestanden.id = zoeken.open_id 
       WHERE zoeken.woord=:inhound
           AND bestanden.name LIKE :naam
           AND bestanden.mime LIKE :formaat
           AND bestanden.created LIKE :date';

$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));

$sth->bindParam(':naam', isset( $_POST['naam']) ? '%' . $_POST['naam'] . '%', '%');
$sth->bindParam(':formaat', isset( $_POST['formaat']) ? '%'.$_POST['formaat'].'%', '%');
$sth->bindParam(':naam', isset( $_POST['date']) ? '%' . $_POST['date'] . '%', '%');
$sth->bindParam(':inhound', is_null( $inhound) ? '%' . $inhound . '%', '%');

$sth->execute();
$sth->fetchAll();