在PHP中创建简单的允许数组? (笨)

时间:2014-04-11 20:49:05

标签: php arrays codeigniter

我有一些简单的功能来收集允许的数组,但有些东西不行,有人可以帮帮我吗?这是我的代码

public function getAllbyLink($table, $what, $url)
{
   $link=mysql_real_escape_string($url);
   $query = $this->db->query("SELECT * FROM ".$table." WHERE ".$what." = '{$link}' LIMIT 0 , 1");

    if ($query->num_rows() > 0)
    {
        return $query->result();
    }
        else redirect('');
}

2 个答案:

答案 0 :(得分:1)

请阅读一些关于MVC模式的内容,明确指出如何编写模型的问题。

考虑使用此功能

public function getTable($table, $where = array(), $select = '*', $order_by = '', $limit = '', $offset = '') {

    if ($order_by !== '' && $order_by != 'RANDOM') $this->db->order_by($order_by);
    if ($order_by == 'RANDOM') $this->db->order_by('id', 'RANDOM');
    if ($limit !== '') $this->db->limit($limit, $offset);
    $this->db->select($select);
    $q = $this->db->get_where($table, $where);

    return ($q->num_rows() > 0) ? $q->result() : FALSE;

}
为了您的目的

调用这样的函数:

getTable($talbe, array('what' => $link)); 
//returns FALSE if no data are selected, 
//or returns object with data, 

如果您希望返回数组,请将$q->result()替换为$q->array_result()

请注意,有效记录会自动退出。


评论后:

comment-1,您可以轻松简化该功能,只需删除您不需要的功能,例如

public function getTable2($table, $where = array(),  $limit = '', $offset = '') {

    if ($limit !== '') $this->db->limit($limit, $offset);
    $q = $this->db->get_where($table, $where);

    return ($q->num_rows() > 0) ? $q->result() : FALSE;

}

comment-2,当没有数据时使用此if-else语句

if (!$my_data = getTable2('table', array('where' => $link))) {
    //there is some DATA to work with
    echo "<pre>";
    var_dump($my_data);
    echo "</pre>";

} else {
    //no DATA do redirect or tell user that there is no DATA
    redirect(); //redirect to default_controller
}

评论-3,没有评论;

comment-4,它还允许更安全的查询,因为系统会自动转义这些值。来自此source。另一个关于活跃记录的SO question提供了您正在寻找的确切答案。

答案 1 :(得分:0)

我对您的代码的理解是:

  • 读取表格中的所有行
  • 检查列表中是否有linkurl
  • 如果是,请返回该值的随机行
  • 否则,重定向。

在这种情况下,试试这个:

public function getAllbyLink($table,$url,$what)
{
    $query = $this->db->query("
          SELECT *
          FROM `".$table."`
          WHERE `".$what."` = '".mysql_real_escape_string($linkurl)."'
          ORDER BY RAND()
          LIMIT 1
    ");
    if( !$query) return redirect('');
    $result = $query->result();
    if( !$result) return redirect('');
    return $result;
}