Код вставки PHP sql возвращает false, даже если команда sql правильная, а база данных тоже

Еще раз возвращаюсь ко всем вам с другим вопросом.

Я перепробовал все, что думал, а также большинство рекомендаций, которые нашел в Интернете и здесь, в Stackoverflow, но, похоже, ничего не решило эту проблему для меня.

По какой-то причине команда sql в моем коде возвращает false, хотя этого не должно быть.

Вот мой файл php с именем (dbRKS-DBTest.php)

<?php
//Gets server connection credentials stored in serConCred.php
//require_once('/../prctrc/servConCred2.php');
require_once('C:\wamp64.2\www\servConCred2.php');

//SQL code for connection w/ error control
$con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if (!$con){
die('Could not connect: ' . mysqli_connect_error());
}

//Selection of the databse w/ error control
$db_selected = mysqli_select_db($con, DB_NAME);

if (!$db_selected){
die('Can not use ' . DB_NAME . ': ' . mysqli_error($con));
}

//VARIABLES & CONSTANTS

//Principal Investigator Information 
$PI_Selected = '6';

//Regulatory Knowledge and Support Core Requests variables
$RKS_REQ_1_Develop = '1';


//This sets a starting point in the rollback process in case of errors along the code
$success = true; //Flag to determine success of transaction
//start transaction
$command = "SET AUTOCOMMIT = 0";
$result = mysqli_query($con, $command);
$command = "BEGIN";
$result = mysqli_query($con, $command);


//Delete this portion of code afyer testing is finished
//Core Requests saved to database
$sql = "INSERT INTO rpgp_form_table_3 (idPI, RKS_REQ_1_Develop) 
                    VALUES ('$PI_Selected', '$RKS_REQ_1_Develop')";  

//*************TEsts code for "SCOPE_IDENTITY()" -> insert_id() for mysql
$sqlInsertId = mysqli_insert_id($con); //This value is supposed to be 0 since no queries have been executed.
echo "<br>MYSQLi_INSERT_ID() value before query should be 0 and it is:= " . $sqlInsertId;

//Checks for errors in the db connection.   
$result = mysqli_query($con, $sql); //Executes query.

if ($result == false){ //Checks to see for errors in previews query ($sql)
    //die ('<br>Error in query to Main Form: Research Proposal Grant Preparation: ' . mysqli_error($con));
    echo "<br>Result for the sql run returned FALSE. Check for error in sql code execution.";
    echo "<br>Error given by php is: " . mysqli_error($con);

    $success = false; //Chances success to false is it encounted an error in order to rollback transaction to database
}
else{

//*************TEsts code for "SCOPE_IDENTITY()" -> insert_id() for mysql
$sqlInsertId = mysqli_insert_id($con); //Saves the last id entered. This would be for the main table
echo "<br>MYSQLi_INSERT_ID() value after Main form query= " . $sqlInsertId; //Displays id last stored. This is the main forms id
$MAIN_ID = mysqli_insert_id($con);  //Sets last entered id in the MAIN Form db to variable  
}   


 //Checks for errors or craches inside the code
 // If found, execute rollback
 if ($success){
     $command = "COMMIT";
     $result = mysqli_query($con, $command);
     echo "<br>Tables have been saved witn 0 errors.";

 }
 else{
     $command = "ROLLBACK";
     $result = mysqli_query($con, $command);
     echo "<br>Error! Databases could not be saved. <br>
     We apologize for any inconvenience this may cause. <br> 
     Please contact a system administrator at PRCTRC.";
 }
 $command = "SET AUTOCOMMIT = 1"; //return to autocommit
 $result = mysqli_query($con, $command);



//Displays message 
//echo '<br>Connection Successfully. ';
//echo '<br>Database have been saved';

//Close the sql connection to dababase
mysqli_close($con);
?>

Вот мой код html интерфейса php с именем (RPGPHomeQueryTest.php)

<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8">
</head>
<form id = "testQuery" name = "testQuery" method = "post" action = "../dbRKS-DBTest.php" enctype = "multipart/form-data">
<input type = "submit" value = "Submit query"/>
</form>
</html>

А вот как выглядит моя база данных (rpgp_form_table_3):

Код вставки PHP sql возвращает false, даже если команда sql правильная, а база данных тоже


Итак, когда я открою свой html-код, все, что я увижу, это кнопку, поскольку весь код там есть. После того, как вы нажмете кнопку, форма должна отправить и выполнить код php с именем (dbRKS-DBTest.php). Это должно принять заранее определенные значения, которые я уже объявил, и сохранить их в базе данных с именем (rpgp_form_table_3). Эта база данных настроена в формате InnoDB.

Теперь я должен получить сообщение о том, что «Таблицы были сохранены с 0 ошибками». но проблема в том, что я получаю вот это сообщение:

Код вставки PHP sql возвращает false, даже если команда sql правильная, а база данных тоже

Честно говоря, не знаю почему. Я отправляю это сообщение, чтобы найти руководство по этой проблеме. Я все еще учусь сам, и было очень искренне не найти решения, чтобы исправить это.

Как всегда, я благодарю вас за терпение и руководство! Сообщите мне, какие еще подробности я могу предоставить.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
79
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вот код SQL, который вы запускаете:

$sql = "INSERT INTO rpgp_form_table_3 (idPI, RKS_REQ_1_Develop) 
                VALUES ('$PI_Selected', '$RKS_REQ_1_Develop')";  

Вы вставляете данные в rpgp_form_table_3. На скриншоте видно, что таблица имеет несколько (7) полей, но вы вставляете только 2 поля. Тогда возникает вопрос: нужно ли указывать значение для всех полей?

Ошибка, которую вы получаете, состояния

Error given by php is: Field 'idCollaRecord_1' doesn't have a default value Error! Databases could not be saved.

Понятно, что вам нужно вставить строку, указав значение для каждого столбца, а не только для двух столбцов, которые вас интересуют.

Пытаться

$sql = "INSERT INTO rpgp_form_table_3 (idPl, RKS_REQ_1_Develop, idCollaRecord_1, idCollaRecord_2, idCollaRecord_3, idCollaRecord_4) 
                VALUES ('$PI_Selected', '$RKS_REQ_1_Develop',0,0,0,0)";  

Привет, Дэвид. Благодарю за ваш ответ. Насколько я понимаю, при вставке значений в таблицу sql вам не нужно указывать все значения, которые будут вставлены в базу данных, поскольку я определяю, какие столбцы я хочу заполнить. Затем я снова на всякий случай проверил ваш совет, но он все равно не сработал. :, (

Adnelon1 29.08.2018 04:28

Вы правы: в SQL вы можете (обратите внимание, что это может) не нужно указывать все значения. Это зависит от вашей схемы.

David Brossard 29.08.2018 15:21

После тщательного обдумывания я заметил, что не определил каждую таблицу в своей базе данных, как вы сказали @David. Когда я определил их все, это устранило проблему, мой друг. Большое вам спасибо.

Adnelon1 30.08.2018 03:11

Попробуйте этот код вставки. Если PI_Selected - ЧИСЛО, используйте Первый. Если это строка, используйте вторую

    $sql = "INSERT INTO rpgp_form_table_3 (idPI, RKS_REQ_1_Develop) VALUES (" . 
    $PI_Selected . ",'" . $RKS_REQ_1_Develop . "')";

    $sql = "INSERT INTO rpgp_form_table_3 (idPI, RKS_REQ_1_Develop) VALUES ('" . 
    $PI_Selected . "','" . $RKS_REQ_1_Develop . "')";

Другие вопросы по теме