mysql if with like子句返回null

时间:2018-11-02 03:02:49

标签: php mysql database pdo

我正在尝试使用php pdo从数据库进行搜索,但是我在mysql中的if语句中搜索的所有值都返回null。如果有人帮助我,我将不胜感激。这是我的代码。 在回声中,我之所以使用var_dump只是因为看到了来自数据库的信息,我发现所有if语句返回null的方式都应该返回值,因为在第二种情况下我正在调用列名。有人可以纠正我吗

    <?php
if(isset($_POST['food'])){
    $text = $_POST['food'];
    // connection to the Ddatabase
    $servername = "******";
    $username = "*******";
    try {
    $db = new PDO("mysql:host=$servername;dbname=*********", $username, "********");
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // let's filter the data that comes in
    $text = trim($text);
    $text = stripslashes($text);
    $text = htmlspecialchars($text);
    $text = strtolower($text);

    // prepare the mysql query to select
    $get_name = $db->prepare("SELECT dou.businessName , m.id, m.ownerid, IF (m.firstFood LIKE :word, m.firstFood, 'no')
, IF (m.secondFood LIKE :word, m.secondFood, 'no')
, IF (m.thirdFood LIKE :word, m.thirdFood, 'no')
, IF (m.fourthFood LIKE :word, m.fourthFood, 'no')
, IF (m.fifthFood LIKE :word, m.fifthFood, 'no')
, IF (m.sixthFood LIKE :word, m.sixthFood, 'no')
, IF (m.seventhFood LIKE :word, m.seventhFood, 'no')
, IF (m.eightFood LIKE :word, m.eightFood, 'no')
, IF (m.ninthFood LIKE :word, m.ninthFood, 'no')
, IF (m.tenthFood LIKE :word, m.tenthFood, 'no')
FROM dineOwnerUser AS dou INNER JOIN menu AS m ON m.ownerid = dou.id WHERE
(m.firstFood LIKE :word
OR m.secondFood LIKE :word
OR m.thirdFood LIKE :word
OR m.fourthFood LIKE :word
OR m.fifthFood LIKE :word
OR m.sixthFood LIKE :word
OR m.seventhFood LIKE :word
OR m.eightFood LIKE :word
OR m.ninthFood LIKE :word
OR m.tenthFood LIKE :word)");
    // bind value
    $get_name->bindValue(':word','%'.$text.'%');
    // execute the query
    $get_name -> execute();
    // show the users on the page
    while($texts = $get_name->fetch(PDO::FETCH_ASSOC)){
        // show each user as a link
        echo '<a href=""><li>'.var_dump($texts['businessName']).'</li></a>';
        echo '<a href=""><li>'.var_dump($texts['firstFood']).'</li></a>';
        echo '<a href=""><li>'.var_dump($texts['secondFood']).'</li></a>';
        echo '<a href=""><li>'.var_dump($texts['thirdFood']).'</li></a>';
        echo '<a href=""><li>'.var_dump($texts['fourthFood']).'</li></a>';
        echo '<a href=""><li>'.var_dump($texts['fifthFood']).'</li></a>';
        echo '<a href=""><li>'.var_dump($texts['sixthFood']).'</li></a>';
        echo '<a href=""><li>'.var_dump($texts['seventhFood']).'</li></a>';
        echo '<a href=""><li>'.var_dump($texts['eightFood']).'</li></a>';
        echo '<a href=""><li>'.var_dump($texts['ninthFood']).'</li></a>';
        echo '<a href=""><li>'.var_dump($texts['tenthFood']).'</li></a>';
        echo '<a href=""><li>'.var_dump($texts['id']).'</li></a>';
    }
}
    catch(PDOException $e)
    {
        echo "Connection failed: " . $e->getMessage();
    }
$db = null;
exit;
}
?>

1 个答案:

答案 0 :(得分:0)

您在mysql中忘记了AS。

    <?php
    if(isset($_POST['food'])){
        $text = $_POST['food'];
        // connection to the Ddatabase
        $servername = "******";
        $username = "*******";
        try {
        $db = new PDO("mysql:host=$servername;dbname=*********", $username, "********");
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        // let's filter the data that comes in
        $text = trim($text);
        $text = stripslashes($text);
        $text = htmlspecialchars($text);
        $text = strtolower($text);

        // prepare the mysql query to select the users 
    $get_name = $db->prepare("SELECT dou.businessName , m.id, m.ownerid, IF (m.firstFood LIKE :word, m.firstFood, 'no') AS firstFood
, IF (m.secondFood LIKE :word, m.secondFood, 'no') AS secondFood
, IF (m.thirdFood LIKE :word, m.thirdFood, 'no') AS thirdFood
, IF (m.fourthFood LIKE :word, m.fourthFood, 'no') AS fourthFood
, IF (m.fifthFood LIKE :word, m.fifthFood, 'no') AS fifthFood
, IF (m.sixthFood LIKE :word, m.sixthFood, 'no') AS sixthFood
, IF (m.seventhFood LIKE :word, m.seventhFood, 'no') AS seventhFood
, IF (m.eightFood LIKE :word, m.eightFood, 'no') AS eightFood
, IF (m.ninthFood LIKE :word, m.ninthFood, 'no') AS ninthFood
, IF (m.tenthFood LIKE :word, m.tenthFood, 'no') tenthFood
FROM dineOwnerUser AS dou INNER JOIN menu AS m ON m.ownerid = dou.id WHERE
(m.firstFood LIKE :word
OR m.secondFood LIKE :word
OR m.thirdFood LIKE :word
OR m.fourthFood LIKE :word
OR m.fifthFood LIKE :word
OR m.sixthFood LIKE :word
OR m.seventhFood LIKE :word
OR m.eightFood LIKE :word
OR m.ninthFood LIKE :word
OR m.tenthFood LIKE :word)");
    // bind value
    $get_name->bindValue(':word','%'.$text.'%');
    // execute the query
    $get_name -> execute();
    // show the users on the page
    while($texts = $get_name->fetch(PDO::FETCH_ASSOC)){
        // show each user as a link
        echo '<a href=""><li>'.$texts['businessName'].'</li></a>';
        echo '<a href=""><li>'.$texts['firstFood'].'</li></a>';
        echo '<a href=""><li>'.$texts['secondFood'].'</li></a>';
        echo '<a href=""><li>'.$texts['thirdFood'].'</li></a>';
        echo '<a href=""><li>'.$texts['fourthFood'].'</li></a>';
        echo '<a href=""><li>'.$texts['fifthFood'].'</li></a>';
        echo '<a href=""><li>'.$texts['sixthFood'].'</li></a>';
        echo '<a href=""><li>'.$texts['seventhFood'].'</li></a>';
        echo '<a href=""><li>'.$texts['eightFood'].'</li></a>';
        echo '<a href=""><li>'.$texts['ninthFood'].'</li></a>';
        echo '<a href=""><li>'.$texts['tenthFood'].'</li></a>';
        echo '<a href=""><li>'.$texts['id'].'</li></a>';
    }
}
    catch(PDOException $e)
    {
        echo "Connection failed: " . $e->getMessage();
    }
$db = null;
exit;
}
?>