我有一个sql请求(插入)的问题。我正在使用handsontable在我的数据库中保存数据。所以这是用户输入数据的网格。 行“Numérope”是数据库中的数字字段,但它不是必填字段,因此它可以为空!
由于我有很多像这样的网格,我做了一个插入数据的通用函数。所以我用这样的数据创建一个字符串:
foreach($ligne as $key => $elt)
{
$values .= '\''.$elt.'\',';
if ($key == ($cptIdEssai-1))
{
$values .= '\''.$id_essai.'\',';
}
}
我在参数中使用此字符串调用该函数,它运行正常。
但我的问题是:因为我的行“numérope”是一个数字,所以请求不起作用。
这是关于萤火虫的警告:
查询失败: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,住客评论
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-使用变量(我制作的两个字符串),我有这个请求(工作正常)
INSERT INTO public.parcelle_elementaire(id_traitement,集团,id_pe,id_essai,code_traitement ,id_bloc,numero_pe,taille_pe,住客评论) VALUES('TEST ESSAI2_TRAIT1','1','TEST ESSAI2_TRAIT1_1','TEST ESSAI2','TEST ESSAI2_TRAIT1','TEST ESSAI2_BLOC1' , '', '', '');
但是这个请求不起作用,因为链接到“numero pe”的值是我数据库中的数字,我发送引号''
。但该值不是必填字段。这就是为什么我不知道该怎么做。