繁体   English   中英

查询的问题

[英]The problem with the query

我找不到为什么这个查询不起作用的答案:

$query = pg_query($connect, sprintf("INSERT INTO table (uid, urzid, time_start, time_stop2, date_start, date_stop, cycle) VALUES ($uid, $pom, '$time1', '$time2', '$data1', '$data2', $cykl)"));

我收到警告:PG_QUERY() [FUNCTION.PG-QUERY]: QUERY FAILED: ERROR: SYNTAX ERROR AT OR NEAR "," AT CHARACTER 96

在我看来,该错误与。'' $ time1, $ Time2 和 $ date1, $ date2 符合日期和时间的格式。

您必须为 function sprintf提供格式

查看文档

而且,在这种情况下根本不需要 sprintf 。

我们无法猜测您的变量中有什么内容。 请运行此代码并粘贴结果:

echo "INSERT INTO table (uid, urzid, time_start, time_stop2, date_start, date_stop, cycle) VALUES ($uid, $pom, '$time1', '$time2', '$data1', '$data2', $cykl)";

你会发现语法错误。

避免此类错误的最佳方法(更重要的是,防止SQL 注入)是使用诸如PDO 之类的库并为变量使用占位符

更新:现在我们可以看到你的变量是什么样的,试试这个:

$query = pg_query($connect, "INSERT INTO table (uid, urzid, time_start, time_stop2, date_start, date_stop, cycle) VALUES ('$uid', '$pom', '$time1', '$time2', '$data1', '$data2', '$cykl')");

但是,不要忘记查看上述评论以获得最佳实践。

尝试反向引用,“ => ',” => '... 总是为我节省很多痛苦。

您必须添加额外的参数:

$world = "World";
$foo = sprintf("Hello %s", $world);

但是,由于您使用的是双引号字符串,因此您不需要 sprintf:

$foo = "Hello $world";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM