Как переписать данный запрос на PDO

168
20 октября 2018, 09:30

Есть вот такой запрос

    $sqlCrt = "SELECT n.*,u.name AS author, p.name AS person, s.name AS work, cf.name AS client_firm_name, CONCAT(cp.lastname,' ',cp.name) AS client_person_name, mp.name AS media_project
  FROM $dbtable[work_task] n
  LEFT JOIN $dbtable[user] u ON u.id=n.id_author
  LEFT JOIN $dbtable[user] p ON p.id=n.id_person
  LEFT JOIN $dbtable[work] s ON n.id_work=s.id
  LEFT JOIN $dbtable[work_firm] cf ON n.client_firm=cf.id
  LEFT JOIN $dbtable[work_author] cp ON n.client_person=cp.id
  LEFT JOIN $dbtable[media_project] mp ON n.id_project=mp.id
  WHERE n.status<3 AND (n.fdate>='$startOfWeek' AND n.fdate<'$next') AND n.id_person='$user_id'";
$resultCrt = dbq($sqlCrt);
for ($i = 0; $i < @mysql_numrows($result); $i++) {
    //якорь массив
    $ar = mysql_fetch_array($result); 

Как можно данный отрезок кода переписать с использованием технологии PDO? Конкретно, я не понимаю, как преобразовать эти многочисленные LEFT JOIN.

Answer 1

PDO - это не про запросы, а про интерфейс доступа к базе.
Тот же запрос будет работать замечательно.

SQL-запрос

$result = mysql_query($sql)

$pdo->query($sql);

Количество строк в результате

mysql_numrows($result)

$result->rowCount();

Получить следующую строку из базы

$ar = mysql_fetch_array($result)

$ar = $result->fetch(PDO::FETCH_ASSOC);  

PS: Настоятельно рекомендую также ознакомиться с механизмом подготовленных выражений (prepared statements). Они позволяют отделить данные от запроса, тем самым гарантируя защиту от SQL-инъекций и, иногда, переиспользовать подготовленные выражения для одинаковых запросов с разными данными

READ ALSO
Ошибка при подключении модели

Ошибка при подключении модели

Пытаюсь подключить модель в контроллере

153
Фраймворк slim zend работает некоректно в Ubuntu

Фраймворк slim zend работает некоректно в Ubuntu

Фрайимворк работает на linux не полностью Некоторые переменные от PHP jquery определяет пустыми и выдаёт алерт сообщение На виндовс в xamp server таких...

171
Как вывести значение по номеру из отсортированного массива?

Как вывести значение по номеру из отсортированного массива?

Допустим отсортировали ассоциативный массив, теперь надо вывести значение по номеру

201