volnistii11
Новичок
Здравствуйте, по советам многих с этого форума начинаю изучать PDO, но не могу понять, как мне изменить отрывок этого кода, чтобы работал на PDO запросе.
Есть функция вывода строк из таблицы:
Если с помощью следующего когда я мог в подобную функцию на Mysqli передавать сразу подготовленный запрос, то здесь помимо запроса мне нужно передать еще массив условий, это выглядит примерно так: DB::getAll('SELECT * FROM table WHERE user_id = ? AND id = ?', [1, 111]); // 1 - подставляется в user_id, 111 - в id
Ну и соответственно, чтобы order и linit тоже корректно работали. Вот, как подготовка запроса выглядела для mysqli_query:
Есть функция вывода строк из таблицы:
Код:
public static function getAll($query, $param = array())
{
self::$sth = self::getDbh()->prepare($query);
self::$sth->execute((array) $param);
return self::$sth->fetchAll(PDO::FETCH_ASSOC);
}
Ну и соответственно, чтобы order и linit тоже корректно работали. Вот, как подготовка запроса выглядела для mysqli_query:
Код:
$pre = " ";
$select = "SELECT SQL_CALC_FOUND_ROWS id, name, description, create_date FROM my_table ";
$where = "";
$search = "";
if( sizeof($_POST['columns']) > 0 ) {
$searchPre = $pre."(";
foreach($_POST['columns'] as $column){
if($column['searchable'] == true && $_POST['search']['value'] != -1 && !empty($_POST['search']['value']) ){
$search .= $searchPre. $column['name']." LIKE '%".mres($_POST['search']['value'])."%'";
$searchPre = " OR ";
}
}
$pre = " AND ";
if (strlen($search)>0) { $search .= ")"; $where = ' WHERE '; }
}
if( isset($_POST['order'][0]) ){
$col_name = $_POST['columns'][$_POST['order'][0]['column']]['name'];
$limit_and_order .= ' ORDER BY '.$col_name.' '.$_POST['order'][0]['dir'];
}
$limit = filter_input(INPUT_POST,'length', FILTER_VALIDATE_INT );
if($limit != -1){
$start = filter_input(INPUT_POST, 'start', FILTER_VALIDATE_INT);
$limit_and_order .= " LIMIT ".$start.",".$limit;
}
$q = $select.$where.$search.$limit_and_order;
$data = DB::getAll($q);
$total = DB::getAll("SELECT FOUND_ROWS()");
echo json_encode(["draw"=>intval($_POST['draw']), "recordsTotal"=>(int) $total, "recordsFiltered"=>(int) $total, "data"=>$data]);