В отличие от этого вопроса , но похоже, что я не получаю сообщение об ошибке при добавлении информации в мою базу данных.
$sql = "INSERT INTO 'nlcc_ver1'.'tUsers' ('userID', 'userName', 'userPassword', 'userHash', 'user_first_name', 'user_last_name', 'user_corps', 'is_admin', 'is_trg', 'is_sup', 'is_co') VALUES (NULL, '" . $userName . "', '" . $hash . "', '" . $salt . "', '" . $f_name . "', '" . $l_name . "', '" . $corps . "', '" . $admin . "', '" . $trg . "', '" . $sup . "', '" . $co . "')"; $hostname_Database = "localhost"; $database_Database = "nlcc_ver1"; $username_Database = "root"; $password_Database = ""; $mysqli = new mysqli($hostname_Database, $username_Database, $password_Database, $database_Database); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $result = $mysqli_query($mysqli, $sql); echo "Query run. Inserted UserID " . mysqli_insert_id($mysqli) . "<br />";
Разбиваются строки, чтобы избежать прокрутки в сторону … На веб-странице указано, что mysqli_insert_id ($ mysqli) равно 0, и ничто не добавляется в таблицу в моей базе данных. Я не вижу ошибки, связанной с появлением базы данных, и MySQL работает на моем сервере, а phpinfo () показывает, как загружаются расширение MySQL и MySQLI. Это всего лишь машина для разработки, поэтому не беспокойтесь о безопасности (т.е. нет пароля). Я попытался решить проблему, но не слишком много нахожу. Я не знаю о объектно-ориентированном программировании на PHP с помощью ->, я использую _. Поддерживается ли этот метод?
Вы смешивали процедурные и объектно-ориентированные стили MySQLi. Это привело к тому, что вы пытались использовать такие функции, как mysqli_query($mysqli)
вместо функций-членов, таких как $mysqli->query()
. Ваш $mysqli
– это объект , а не дескриптор ресурса.
И вы не выполняете проверку ошибок в своем запросе. Если бы вы были, вы бы поняли, что ошибочно использовали одинарные кавычки для разграничения имен таблиц и полей, а не обратных ссылок.
$sql = "INSERT INTO `nlcc_ver1`.`tUsers` (`userID`, `userName`, `userPassword`, `userHash`, `user_first_name`, `user_last_name`, `user_corps`, `is_admin`, `is_trg`, `is_sup`, `is_co`) VALUES (NULL, '" . $userName . "', '" . $hash . "', '" . $salt . "', '" . $f_name . "', '" . $l_name . "', '" . $corps . "', '" . $admin . "', '" . $trg . "', '" . $sup . "', '" . $co . "')"; $hostname_Database = "localhost"; $database_Database = "nlcc_ver1"; $username_Database = "root"; $password_Database = ""; $mysqli = new mysqli($hostname_Database, $username_Database, $password_Database, $database_Database); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $result = $mysqli->query($sql); if (!$result) { printf("%s\n", $mysqli->error); exit(); } echo "Query run. Inserted UserID " . $mysqli->insert_id . "<br />";
Я настоятельно рекомендую использовать руководство в качестве ссылки. Совершенно ясно, как использовать эти функции, когда вы используете либо процедурный, либо объектно-ориентированный стиль MySQLi.
$mysqli_query($mysqli, $sql);
должно быть
mysqli_query($mysqli, $sql);
ИЛИ
$mysqli->query($sql);
И позже
$mysqli->insert_id();
Посмотри на это:
'nlcc_ver1'.'tUsers'
Вы должны использовать backticks здесь в качестве символа цитаты:
`nlcc_ver1`.`tUsers`
Но однако (предполагая, что $ in $ mysqli_query – это просто опечатка): вы не получите ошибок для запроса, если только вы не используете mysqli_error () сразу после выполнения запроса.
SET AutoCommit = 1 перед вставкой
$mysqli->query('SET AUTOCOMMIT = 1');