Из того, что я собрал, это означает, что служба mysql (mysqld) не работает.
"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld" --install
из командной строки.
services.msc > MySQL > start
Если перезапуск не удается, вы можете выполнить следующие действия:
cmd.exe > open as administrator
"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld" --verbose
, он должен завершиться ошибкой и поместит журнал ошибок в каталог с именем данные в C: \ Program Files \ MySQL \ MysSQL Server 5.7 \ . Если по какой-то причине не удается создать данные , сделайте это вручную в этом каталоге и повторите попытку. Если вы можете выяснить, чего не хватает в том, что находится в этом журнале, тогда хорошо, все готово.
Если вам все еще не повезло, вот как я это сделал:
goto C:\ProgramData\MySQL
и скопируйте файл с именем my.ini в C:\Windows\
попробуйте снова запустить службу из командной строки: "C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld" --verbose
Если не отображается ошибка, чем запуск службы был успешным. Если это все еще не работает, то удалите my.ini , который вы только что скопировали из C:\Windows
, и снова запустите службу из командной строки.
это должно работать сейчас
$link = mysqli_connect('127.0.0.1', 'my_user', 'my_pass', 'my_db');
mysqli_query($link, "INSERT INTO mytable (1, 2, 3, 'blah')");
$id = mysqli_insert_id($link);
См. mysqli_insert_id ()
.
Что бы вы ни делали, не вставляйте, а затем выполняйте " SELECT MAX (id) FROM mytable
". Как вы говорите, это состояние гонки, и в этом нет необходимости. mysqli_insert_id ()
уже имеет эту функцию.
Функция MySQL LAST_INSERT_ID ()
делает именно то, что вам нужно: она извлекает идентификатор, который был вставлен во время этого сеанса . Таким образом, его безопасно использовать, даже если есть другие процессы (например, другие люди, вызывающие тот же сценарий), вставляющие значения в ту же таблицу.
Функция PHP mysql_insert_id ()
делает то же самое. как вызывающий SELECT LAST_INSERT_ID ()
с mysql_query ()
.