Я создал форму, содержащую два поля имя и фамилию, но когда я запускаю приведенный ниже код, он показывает ошибку неопределенной переменной, и значения не вставляются в базу данных.
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myfd";
$conn=mysqli_connect($servername,$username,$password,$dbname);
if ($conn->connect_error){
echo "error";
}
else{
echo "successfull";
}
if (isset($_POST["submit"])){
$fname=$_POST["firstname"];
$lname=$_POST["lastname"];
$myfd_query = "INSERT INTO 'logi'('$fname','$lname')
VALUES('$fname','$lname')";
}
try {
$myfd_result = mysqli_query($conn, $myfd_query);
if ($myfd_result) {
echo "successfull";
} else {
echo "error";
}
}
catch (Exception $exception){
echo "error";
}
?>
ты можешь подключиться к БД?
Отправьте сообщение об ошибке, чтобы помочь нам, друг! Пожалуйста, прочтите эту статью, чтобы понять, почему вам нужно читать ошибки, и, возможно, понять, почему ваш код не работает.
INSERT INTO logiundefined для $ myfd_result. Да, я могу подключиться к БД. Примечание: неопределенная переменная: myfd_query в C: \ xampp \ htdocs \ myf \ home.php в строке 20, это ошибка.






Имя переменной указано неверно. Пожалуйста, обновите имя переменной.
Вставить синтаксис запроса:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
Примечание: неопределенная переменная: myfd_query в C: \ xampp \ htdocs \ myf \ home.php в строке 20
Успешное уведомление: неопределенная переменная: myfd_query в C: \ xampp \ htdocs \ myf \ home.php в строке 21 Предупреждение: mysqli_query (): пустой запрос в C: \ xampp \ htdocs \ myf \ home.php в строке 21 ошибка
Попробуйте это в своем запросе
$myfd_query = "INSERT INTO `logi`(`firstname`,`lastname`)
VALUES('".$fname."','".$lname."')";
попробуй это.
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myfd";
$conn=mysqli_connect($servername,$username,$password,$dbname);
if ($conn->connect_error){
echo "error";
}
else{
echo "successfull";
}
if (isset($_POST["submit"])){
$fname=$_POST["firstname"];
$lname=$_POST["lastname"];
$myfd_query = "INSERT INTO 'logi'('$fname','$lname')
VALUES('$fname','$lname')";
try {
$myfd_result = mysqli_query($conn, $myfd_query);
if ($myfd_result) {
echo "successfull";
} else {
echo "error";
}
}
catch (Exception $exception){
echo "error";
}
}
?>
Это связано с тем, что область видимости этой переменной $ myfd_query находится только внутри блока if. Попробуйте объявить этот запрос вне или попробуйте использовать его в той же области. Также можно попробовать:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myfd";
$conn = mysqli_connect($servername, $username, $password, $dbname);
if ($conn->connect_error) {
echo "error";
} else {
echo "successfull";
}
$myfd_query = "";
if (isset($_POST["submit"])) {
$fname = $_POST["firstname"];
$lname = $_POST["lastname"];
$myfd_query = "INSERT INTO 'logi'('$fname','$lname')
VALUES('$fname','$lname')";
}
try {
$myfd_result = mysqli_query($conn, $myfd_query);
if ($myfd_result) {
echo "successfull";
} else {
echo "error";
}
} catch (Exception $exception) {
echo "error";
}
?>
Пожалуйста, пожалуйста, всегда форматируйте свой код. Это будет намного легче понять даже автору этого кода.
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myfd";
$conn=mysqli_connect($servername,$username,$password,$dbname);
if ($conn->connect_error){
echo "error";
} else{
echo "successfull";
}
if (isset($_POST["submit"])){
$fname=$_POST["firstname"];
$lname=$_POST["lastname"];
$myfd_query = "INSERT INTO 'logi'('$fname','$lname') VALUES('$fname','$lname')";
}
try {
$myfd_result = mysqli_query($conn, $myfd_query);
if ($myfd_result) {
echo "successfull";
} else {
echo "error";
}
} catch (Exception $exception){
echo "error";
}
хорошо, поехали.
Проблема № 1. В случае ошибки подключения скрипт покажет текст error и продолжит выполнение.
Проблема 2. посмотрите, вы устанавливаете переменную только при isset($_POST["submit"]), но всегда выполняете запрос.
Проблема 3. Ваш запрос неверен. вместо того
$myfd_query = "INSERT INTO 'logi'('$fname','$lname') VALUES('$fname','$lname')"; должен выглядеть примерно так: $myfd_query = "INSERT INTO 'logi'(firstname,lastname) VALUES('$fname','$lname')";, однако (я не знаю точных имен полей в вашей таблице Логи)
Проблема 4. Не заключайте имя таблицы в кавычки с помощью символов 'или ", некоторые конфигурации mysql не принимают имя таблицы в кавычках. Лучше использовать обратный апостроф:`
Проблема 5. Лучше использовать заполнители вместо того, чтобы помещать переменные внутри строки. Это способ SQL-инъекций. И лучше получить практику всегда использовать заполнители. См. Пример здесь
Для какой переменной он дает неопределенное значение?