У меня проблема с запросом sql (вставка). Я использую handsontable для сохранения данных в моей базе данных. Так вот моя сетка, где пользователь вводит данные.
Строка «Numéro pe» является числовым полем в базе данных, но это не обязательное поле, поэтому оно может быть пустым !!
Так как у меня много сеток, подобных этой, я сделал универсальную функцию, которая вставляет данные. Поэтому я создаю строку с такими данными:
foreach($ligne as $key => $elt)
{
$values .= '\''.$elt.'\',';
if ($key == ($cptIdEssai-1))
{
$values .= '\''.$id_essai.'\',';
}
}
И я вызываю функцию с этой строкой в параметрах, и она отлично работает.
Но моя проблема в том, что моя строка «numéro pe» числовая, запрос не работает.
Вот предупреждение о клопе:
Запрос не выполнен: ERREUR: неверный синтаксис с целым числом: «»
ЛИНИЯ 2: … ESSAI2 ‘,’ TEST ESSAI2_TRAIT1 ‘,’ TEST ESSAI2_BLOC1 ‘,’ ‘,’ ‘,’ ‘);
Pb с просьбой:
INSERT INTO public.parcelle_elementaire(id_traitement,bloc,id_pe,id_essai,code_traitement,id_bloc,numero_pe,taille_pe,commentaires)
VALUES('TEST ESSAI2_TRAIT1','1','TEST ESSAI2_TRAIT1_1','TEST ESSAI2','TEST ESSAI2_TRAIT1','TEST ESSAI2_BLOC1','','','');
Может кто-нибудь помочь мне решить это, пожалуйста?
РЕДАКТИРОВАТЬ :
Поэтому очень сложно объяснить мою проблему, но я собираюсь дать вам больше информации с более подробной информацией шаг за шагом.
Так :
1- Пользователь вводит данные в сетку.
2- Когда он отправляет, я отправляю содержимое этой сетки с помощью Ajax и вставляю значения в базу данных.
2.1- Я делаю первую строку с заголовками строк и получаю именно эту строку:
id_traitement, блок, id_pe, id_essai, code_traitement
, id_bloc, numero_pe, taille_pe, Commentaires
2.2- Я делаю вторую строку с данными, которые написал пользователь, и получаю эту строку:
‘TEST ESSAI2_TRAIT1’, ‘1’, ‘TEST ESSAI2_TRAIT1_1’, ‘TEST ESSAI2’, ‘TEST ESSAI2_TRAIT1’
, ‘TEST ESSAI2_BLOC1’, », », »
Итак, некоторые данные пусты, и это совершенно нормально.
3- Я посылаю эти две строки в функцию, чтобы вставить значения
insert($champsBase,$values,$tableBDD); //Here is my call
function update($champsDB,$idUpdate,$tableBDD,$idTable) //Here is the function
{
$conn_string = "host=localhost port=5432 dbname=test_postgre user=postgres password='1234'";
$dbconn = pg_connect($conn_string);
$sql = "UPDATE public.".$tableBDD." SET ".$champsDB." WHERE '.$idTable.'='".$idUpdate."'";
$res = pg_query($sql) or die("Pb avec la requete: $sql");
}
4- С переменными (две строки, которые я сделал) у меня есть этот запрос (который работает)
ВСТАВИТЬ В
public.parcelle_elementaire (id_traitement, блок, id_pe, id_essai, code_traitement
, Id_bloc, numero_pe, taille_pe, Commentaires)
ЗНАЧЕНИЯ (‘TEST ESSAI2_TRAIT1’, ‘1’, ‘TEST ESSAI2_TRAIT1_1’, ‘TEST ESSAI2’, ‘TEST ESSAI2_TRAIT1’, ‘TEST
ESSAI2_BLOC1’ , », », »);
Но этот запрос не работает, потому что значение, связанное с «Numberro Pe» является числовым в моей базе данных, и я отправляю кавычки ''
, Но значение не является обязательным полем. Вот почему я не знаю, как это сделать.
Задача ещё не решена.
Других решений пока нет …