Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не могу выполнить mysql запрос через PHP больше одной строки ?

n0bleman Ученик (3), открыт 1 неделю назад
Вот так я удаляю таблицу users из базы все работает

$sql = 'DROP TABLE fr7910hy_users.Users';


if (mysql_query($sql, $link)) {
echo "Database my_db was successfully dropped\n";
} else {
echo 'Error dropping database: ' . mysql_error() . "\n";
}
?>

Тепереь мне надо выполнить mysql команду такого типа

SET @num :=0;
UPDATE Users SET id = @num := (@num+1);
ALTER TABLE Users AUTO_INCREMENT =1;

Пробую так как указано в документации по множетсвенный запросам не выходит что то
$sql = "SET @num :=0;
UPDATE fr7910hy.Users SET id = @num := (@num+1);
ALTER TABLE fr7910hy.Users AUTO_INCREMENT =1;"
пробую так через phpMyadmin там это код выполняется через php каак то видимо правильно оформить надо строку но не знаю как
Дополнен 1 неделю назад
Способ найден!

$query = "SET @num :=0;";
$query .= "UPDATE Users SET id = @num := (@num+1);";
$query .= "ALTER TABLE Users AUTO_INCREMENT =1;";

/* execute multi query */
$mysqli->multi_query($query);
do {
/* store the result set in PHP */
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_row()) {
printf("%s\n", $row[0]);
}
}
/* print divider */
if ($mysqli->more_results()) {
printf("-----------------\n");
}
} while ($mysqli->next_result());
2 ответа
Андрей Высший разум (460550) 1 неделю назад
Ну так создай в базе хранимую процедуру, содержащую группу команд. И вызывай её одной командой.

Но тот код, который ты привёл, вызывает вопросы.

Во первых, если ты УДАЛИЛ таблицу, то каким образом ты хочешь делать UPDATE и ALTER TABLE несуществующей таблицы?

Во вторых, НЕ НАДО перенумеровывать первичный ключ. НИКОГДА не надо. Первичный ключ (даже автоинкрементный) - НЕ способ нумерации, а способ назначить каждой записи таблицы УНИКАЛЬНЫЙ идентификатор. И если первичный ключ уже был использован в таблице, он НЕ ДОЛЖЕН назначаться другим записям.

P.S. Идея использовать первичный ключ для последовательной нумерации приходит в голову очень многом новичкам, не понимающим, что первичные ключи - механизм организации связей между таблицами и перенумерация первичных ключей разрушает эти связи, а повторное использование ранее удалённых первичных ключей приводит к непредсказуемым последствиям.
Похожие вопросы