#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. Извините, я добавил это в конец кода, и это не сработало, просто выдало мне ошибку