OOPHP выбрать из MySQL

#php #mysql #select

#php #mysql #выберите

Вопрос:

Мне интересно, как сделать следующее Я хочу создать общедоступную функцию, которая позволяет мне выбирать из MYSQL

Вот код, который у меня есть до сих пор, но он выдает ошибку if.

 public function select($table,$options,$where,$orderby)
    {

        $sql = mysql_query("SELECT ". 
        if($options)
        {
        $options
        }
        ." FROM ".
        $table
        if($where)
        {
        ." WHERE ".$where.
        }
        if ($orderby)
        {
        ." ORDER BY ".$orderby.
        }
        ."") or mysql_error() ;

        $row = mysql_fetch_assoc($sql);
        $rows[] = $row;
        print json_encode($rows);

    }
  

Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный T_IF в /home/realcas/public_html/eshop/ecms/system/classes/database.php в строке 23

Комментарии:

1. Я написал похожие вещи для запросов add и mod в mysql… дайте мне знать, если вам это нужно

2. Это было бы здорово, каков наилучший способ связаться с вами

Ответ №1:

Попробуйте

 $sql = mysql_query("SELECT ". $options ." FROM ". $table .
                   ($where ? "WHERE " . $where : "") .
                   ($orderby? "ORDER BY ".$orderby  : "")) or mysql_error() ; 

$row = mysql_fetch_assoc($sql); 
$rows[] = $row; 
print json_encode($rows); 
  

Ответ №2:

Вы не можете иметь if-операторы внутри вызова функции. Создайте свой SQL снаружи, а затем передайте его непосредственно в mysql_query. Пример:

 $sql = "SELECT ";
if($options)
    $sql .= "FROM " . $table;
if($where)
    $sql .= " WHERE " . $where;
if($orderby)
    $sql .= " ORDER BY " . $orderby;

$query = mysql_query($sql);
  

Я также предполагаю, что вы пропускаете exit before mysql_error() . Как и сейчас, вы не получите никакого вывода. Измените его на:

 mysql_query($sql) or die(mysql_error());
  

В-третьих, вы сможете получить только одну строку, поскольку вы вызываете только mysql_fetch_assoc один раз. Вы должны продолжать повторять его до тех пор, пока есть результаты:

 $rows = array();
while($row = mysql_fetch_assoc($query))
    $rows[] = $row;

// $rows will now contain all rows returned from your select statement
  

Ответ №3:

улучшенный способ:

 public function select($table,$options,$where,$orderby)
{
    $options = empty($options) ? "*"   : $options;
    $where  =  empty($where)   ? "1=1" : $where;
    $orderby = empty($orderby) ? ""    : $orderby;

    $qry = "SELECT $options FROM $table WHERE $where $orderby ";
    $result= mysql_query($qry) or die(mysql_error());

    while(($resultArray[] = mysql_fetch_assoc($result));
    return json_encode($resultArray);

}
  

Комментарии:

1. недостатком этого является то, что нам нужно показать пользователю сообщение об ошибке, если есть ошибка, а также должно быть в формате JSON

2. если вы хотите показать сообщение об ошибке, сделайте это через некоторое время return empty($resultArray) ? "Error in Query " ? json_encode($resultArray);

3. Извините, я добавил это в конец кода, и это не сработало, просто выдало мне ошибку