Mysql Query没有返回任何输出?

时间:2013-11-10 13:58:35

标签: php mysql codeigniter

我正在使用codeigniter而我正在执行此查询

SELECT c.id AS id, c.name AS name, c.img_add AS img, c.downloads as down, c.tag as tag, c.date as date,c.views as view FROM core c WHERE c.name = 'Ganesha (2)' ORDER BY c.downloads DESC

查询在模型中使用,并且不返回任何数据,而在Heidi SQL中执行相同的查询时,会返回适当的数据。

我不知道天气这是一个查询问题,codeigniter问题还是php的,所以我发帖给所有人。

这是我在codeigniter模型中编写的代码。这可能有助于回答。

public function getFolderDetail($folder) {

    $sql = "SELECT c.id AS `id`, c.name AS `name`, c.img_add AS `img`, c.downloads as `down`, c.tag as `tag`, c.date as `date`,c.views as `view` FROM core c
            WHERE c.name = ?
            ORDER BY c.downloads DESC";
    $params = array($folder);
    return $query = $this->db->query($sql,$params);
}

3 个答案:

答案 0 :(得分:1)

我怀疑可能是保留字,可能需要tick个标记。我会从你的

开始
 `name`, `date` and `view` columns... 

tick是键盘上#1左侧的键,而不是单引号

可能保留的每个部分都需要刻度标记......例如

c.`name` as `name` (same with others) 

它适用于

的where子句
where c.`name` = 'something'

您是否遇到了无效的功能?

通过在字符串中发送“Alexa(2)”,可能会将其解释为名为“Alexa”的函数,并且它传递参数2,因此Alexa不是真正的函数。你可以尝试不用parens作为价值吗?

Here is a list of MySQL reserved words

答案 1 :(得分:0)

尝试逃避保留字“date”

SELECT `c`.`date` as `date` etc...

http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html

答案 2 :(得分:0)

我遇到了问题,实际上Ganesh (2)文件夹中的值为Ganesha (2),这是值的网址格式,因为我将此值作为网址发送。

我做了这个

public function getFolderDetail($folder) {
$folder = str_replace(')',')',$folder);
$folder = str_replace('(','(',$folder);
    //echo $folder = str_replace('(','\(',$folder);

    $sql = "SELECT c.id AS `id`, c.name AS `name`, c.img_add AS `img`, c.downloads as `down`, c.tag as `tag`, c.date as `date`,c.views as `view` FROM core c
            WHERE c.name = ?
            ORDER BY c.downloads DESC";
    $params = array($folder);
    return $query = $this->db->query($sql,$params);
}

现在代码工作正常。