php pdo select 使用 where 条件和 order by 子句查询

php pdo select query with where condition and order by clause

我需要从我的数据库中 select youtube 源。

我在 php pdo 中创建我的代码。

为此我设置了这样的条件...

但这不起作用,甚至不显示任何错误或也不显示视频。

当我从下面删除 where 条件时 select 查询它是否正常工作....

请建议如何使用 php pdo 准备语句将此条件放入 select 查询中。

谢谢...

下面是我的代码 select..

<?php
$youtubesource = "youtubesource <>  ''";
$youtube = $database->getRows("SELECT youtubesource FROM news where youtubesource = :youtubesource ORDER BY id DESC LIMIT 0,1",array(':youtubesource'=>$youtubesource));                        
?>

下面是我的 getrows 函数

 public function getRows($query, $params=array()){
            try{ 
                $stmt = $this->datab->prepare($query); 
                $stmt->execute($params);
                return $stmt->fetchAll();       
                }catch(PDOException $e){
                throw new Exception($e->getMessage());
            }       
        }

您需要在发送给函数的数组参数中使用 : 吗?

$youtube = $database->getRows("SELECT youtubesource FROM news where youtubesource = :youtubesource ORDER BY id DESC LIMIT 0,1",array('youtubesource'=>$youtubesource));

还有,这样对吗:$youtubesource = "youtubesource <> ''"; 这不会是 SELECT youtubesource FROM news 其中 youtubesource = youtubesource <> '' ORDER BY id DESC LIMIT 或类似的东西

如果我正确地分析你的查询,这就是我所看到的:

SELECT youtubesource 
FROM news 
WHERE youtubesource = :youtubesource     
ORDER BY id DESC 
LIMIT 0,1

:youtubesourceyoutubesource <> '',最终查询将是:

SELECT youtubesource 
FROM news 
WHERE youtubesource = 'youtubesource <> '''   
ORDER BY id DESC
LIMIT 0,1

youtubesource <> '' 的意思是您正在尝试获取所有不为空 youtubesource 字段的行。

在这种情况下,您的代码可能如下所示:

$youtube = $database->getRows("SELECT youtubesource FROM news where youtubesource <> '' AND youtubesource is not null ORDER BY id DESC LIMIT 0,1");