1

私が今持っています :

$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_query で if または何かを使用することは可能ですか?

4

5 に答える 5

0

mysql_*新しいコードで関数を使用しないでください。それらはもはや維持されておらず、非推奨プロセスが開始されています。赤いボックスがか?代わりにプリペアドステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事はどちらを決定するのに役立ちます。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);
于 2012-12-07T14:00:54.517 に答える
0

多分strlen()?

if(strlen($inhoud)>0){
    $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);
 }else{
    //error fill in search term
 }
于 2012-12-07T13:56:39.773 に答える
0

まず第一に、どのような状況でも が設定されていると想定すべきではありません(設定されている$_POST[...]ことをすでに確認していない限り)。正しい使い方は次のとおりです。

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

また、mysql_*ファミリは非推奨であるため、代わりにmysqli_*orを使用し、 PDOPDO の例 (とを使用) を使用することに注意してください。PDO::Prepare()PDOStatement::bindParam()PDOStatement::Execute()

$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();
于 2012-12-07T14:08:01.220 に答える
0
    $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);
于 2012-12-07T13:52:13.080 に答える
0

空の関数を使用

empty($inhound);

ここを見てください:http://php.net/manual/en/function.empty.php

于 2012-12-07T13:52:41.430 に答える