Подскажите пожалуйста! Есть мультизапрос в итоге должно быть 2 переменных fio, time_vh, как их получить? PHP: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <?php require_once 'connection.php'; // подключаем скрипт $link = mysqli_connect($host, $user, $password, $database) or die("Ошибка " . mysqli_error($link)); mysqli_query($link,"SET CHARACTER SET 'utf8'"); mysqli_query($link,"SET SESSION collation_connection ='utf8_unicode_ci'"); $sql ="SELECT fio FROM fio_table WHERE propusk = (SELECT propusk FROM prohod ORDER BY propusk DESC LIMIT 1)"; $sql.="SELECT time_vh FROM prohod ORDER BY propusk DESC LIMIT 1"; if (!$mysqli->multi_query($sql)) { echo "Не удалось выполнить мультизапрос: (" . $mysqli->errno . ") " . $mysqli->error; } do { if ($res = $mysqli->store_result()) { var_dump($res->fetch_all(MYSQLI_ASSOC)); $res->free(); } } while ($mysqli->more_results() && $mysqli->next_result()); mysqli_close($link); ?> </body> </html>
PHP: select ft.fio , pr.time_vh from prohod as pr left join fio_table as ft on pr.propusk = ft.propusk order by pr.propusk desc
Первый раз с mysql. Подскажите пожалуйста, как их в таблицу вставить? PHP: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <?php require_once 'connection.php'; // подключаем скрипт $link = mysqli_connect($host, $user, $password, $database) or die("Ошибка " . mysqli_error($link)); mysqli_query($link,"SET CHARACTER SET 'utf8'"); mysqli_query($link,"SET SESSION collation_connection ='utf8_unicode_ci'"); $sql ="select ft.fio , pr.time_vh from prohod as pr left join fio_table as ft on pr.propusk = ft.propusk order by pr.propusk desc"; echo "<table>\n"; echo "<tr><th>Здравствуйте</th></tr>\n"; echo "<tr><th>$ft.fio</th></tr>\n"; echo "<tr><th>Время входа:</th></tr>\n"; echo "<tr><th>$pr.time_vh</th></tr>\n"; echo "</table>\n"; mysqli_close($link); ?> </body> </html>
Не совсем понимаю конструкцию. PHP: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <?php require_once 'connection.php'; // подключаем скрипт $link = mysqli_connect($host, $user, $password, $database) or die("Ошибка " . mysqli_error($link)); mysqli_query($link,"SET CHARACTER SET 'utf8'"); mysqli_query($link,"SET SESSION collation_connection ='utf8_unicode_ci'"); $query ="select ft.fio , pr.time_vh from prohod as pr left join fio_table as ft on pr.propusk = ft.propusk order by pr.propusk desc"; if ($result = $mysqli->query($query)) { /* извлечение ассоциативного массива */ while ($row = $result->fetch_assoc()) { printf ("%s (%s)\n", $row["fio"], $row["time_vh"]); echo "<table>\n"; echo "<tr><th>Здравствуйте</th></tr>\n"; echo "<tr><th>$row[$fio]</th></tr>\n"; echo "<tr><th>Время входа:</th></tr>\n"; echo "<tr><th>$row[time_vh]</th></tr>\n"; echo "</table>\n"; } /* удаление выборки */ $result->free(); } mysqli_close($link); ?> </body> </html>
Вот так ничего не выходит. Ни ошибки, ни выполненного запроса. PHP: <!DOCTYPE html> <html> <head> <meta http-equiv="refresh" content="5"; charset="utf-8"> </head> <body> <?php require_once 'connection.php'; // подключаем скрипт $link = mysqli_connect($host, $user, $password, $database) or die("Ошибка " . mysqli_error($link)); mysqli_query($link,"SET CHARACTER SET 'utf8'"); mysqli_query($link,"SET SESSION collation_connection ='utf8_unicode_ci'"); $query ="SELECT ft.fio , pr.time_vh from prohod as pr left join fio_table as ft on pr.propusk = ft.propusk order by pr.propusk desc"; // Выполняем запрос $result = mysql_query($query); // Проверяем результат // Это показывает реальный запрос, посланный к MySQL, а также ошибку. Удобно при отладке. if (!$result) { $message = 'Неверный запрос: ' . mysql_error() . "\n"; $message .= 'Запрос целиком: ' . $query; die($message); } // Используем результат // Попытка напечатать $result не выведет информацию, которая в нем хранится // Необходимо использовать какую-либо mysql-функцию, работающую с результатом запроса // См. также mysql_result(), mysql_fetch_array(), mysql_fetch_row() и т.п. while ($row = mysql_fetch_assoc($result)) { echo $row["fio"]; echo $row["time_vh"]; } // Освобождаем ресурсы, ассоциированные с результатом // Это делается автоматически в конце скрипта mysql_free_result($result); mysqli_close($link); ?> </body> </html>
как вы это родили?: PHP: $result = mysql_query($query); откуда если я дал вам конкретную ссылку: https://www.php.net/manual/ru/mysqli-result.fetch-assoc.php
Как по ссылке не выводит ничего, подставил эти переменные. PHP: <!DOCTYPE html> <html> <head> <meta http-equiv="refresh" content="5"; charset="utf-8"> </head> <body> <?php require_once 'connection.php'; // подключаем скрипт $link = mysqli_connect($host, $user, $password, $database) or die("Ошибка " . mysqli_error($link)); mysqli_query($link,"SET CHARACTER SET 'utf8'"); mysqli_query($link,"SET SESSION collation_connection ='utf8_unicode_ci'"); $query ="SELECT ft.fio , pr.time_vh from prohod as pr left join fio_table as ft on pr.propusk = ft.propusk order by pr.propusk desc"; if ($result = $mysqli->query($query)) { /* извлечение ассоциативного массива */ while ($row = $result->fetch_assoc()) { printf ("%s (%s)\n", $row["ft.fio"], $row["pr.time_vh"]); } /* удаление выборки */ $result->free(); mysqli_close($link); ?> </body> </html>
так что покажет? PHP: $link=mysqli_connect($host,$user,$password,$database); if (mysqli_connect_errno()) { printf("Соединение не удалось: %s\n", mysqli_connect_error()); exit(); } $query = "SELECT ft.fio , pr.time_vh from prohod as pr left join fio_table as ft on pr.propusk = ft.propusk order by pr.propusk desc"; if ($result = mysqli_query($link, $query)) { $row = mysqli_fetch_assoc($result); print_r($row); }else{ echo 'нет данных'; }
Подскажите еще пожалста. Как обновить записи в одной строке если знаем два значения из нее Код (Text): "UPDATE prohod SET (status = '0', time_vih='$datev',date_vih = '$datey') SELECT status, date_vih, time_vih FROM prohod WHERE propusk=0006 AND id=MAX(ID)";
PHP: $query = "UPDATE prohod SET (status = '0', time_vih='".$datev."', date_vih = '".$datey."') WHERE propusk = '0006'"; mysqli_query($link, $query); $query = "SELECT status, date_vih, time_vih FROM prohod WHERE propusk=0006 AND id=MAX(ID)"; if ($result = mysqli_query($link, $query)) { while($row = mysqli_fetch_assoc($result)){ // echo... } }
Подскажите, что можно придумать заместо: id=MAX(id) с ним выходит ошибка: Код (Text): LIMIT 0, 25 Ответ MySQL: Документация #1111 - Invalid use of group function
тебе максимальный id что ли нужен? или последняя запись? PHP: $query = "SELECT status, date_vih, time_vih FROM prohod WHERE propusk=0006 order by id desc limit 1";
Код (Text): SELECT id, status, date_vih, time_vih FROM prohod WHERE propusk=0006 order by id desc limit 1 в эту выборку уфффф надо обновить Код (Text): UPDATE prohod SET (status = '0', time_vih='".$datev."', date_vih = '".$datey."') как их правельно состыковать?
START TRANSACTION; SELECT id FROM prohod WHERE propusk=0006 ORDER BY id DESC LIMIT 1 FOR UPDATE; UPDATE prohod SET status = 0 WHERE id = id; COMMIT; эта конструкция в mysql работает, как перевести в php?
@shiyri вы хоть что нибудь понимаете в своем запросе? Или хотя бы вот в этом: PHP: UPDATE prohod as pr, (SELECT id FROM prohod WHERE propusk='0006' ORDER BY id DESC LIMIT 1) as src SET pr.status = 0 WHERE pr.id = src.id;
as создает временную таблицу pr далее по ней запрос выбрать id из оригинальной таблицы prohod если propusk = 0006 и отсортировать по убыванию id и взять первую строку предыдущую выборку взять за временную таблицу src обновить значение временной таблицы pr в ячейке статус 0 если во временной таблице id = id временной таблице src. в том что выше написал про start transaction тоже понимаю, но как реализовать хз.
@shiyri ну так наверное: PHP: $query = "UPDATE prohod as pr, (SELECT id FROM prohod WHERE propusk='0006' ORDER BY id DESC LIMIT 1) as src SET pr.status = 0 WHERE pr.id = src.id;"; mysqli_query($link, $query);