我尝试生成一个printf
的查询,在MySQL上执行:
$query = printf("INSERT INTO author VALUES (null,'%s','%s','%s',null,null,null,null,null)",
$command['pseudonym'],$command['name'],$command['surname']);
$result = $connection->query($query);
但结果是这个奇怪的错误:
INSERT INTO author VALUES (null,'pseudo','nome','cognome',null,null,null,null,null)
Database access failed: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near '83' at line 1
生成的查询在PhpMyadmin中完全恶化。
我还尝试了一个没有printf
的代码版本,它可以工作:
$pseudo = $command['pseudonym'];
$name = $command['name'];
$surname = $command['surname'];
$query = "INSERT INTO author VALUES (null,'$pseudo','$name','$surname',null,null,null,null,null)";
使用printf
的版本有什么问题?
答案 0 :(得分:3)
您正在寻找sprintf
,因为您希望存储查询字符串供以后使用。
答案 1 :(得分:1)
答案 2 :(得分:0)
而不是printf()
使用sprintf():
$query = sprintf("INSERT INTO author VALUES (null,'%s','%s','%s',null,null,null,null,null)",
$command['pseudonym'],$command['name'],$command['surname']);
答案 3 :(得分:0)
这里使用了sprintf,因为
sprintf具有原始printf的所有格式化功能,这意味着您可以做的不仅仅是在字符串中插入变量值。
例如,指定数字格式(十六进制,十进制,八进制),小数位数,填充等。 Google for printf,你会发现很多例子。有关printf的维基百科文章应该可以帮助您入门。
答案 4 :(得分:0)
不能将“null”视为数据库中的空值吗?
$query = sprintf("INSERT INTO author VALUES ('','%s','%s','%s','','','','','')",
$command['pseudonym'],$command['name'],$command['surname']);
可能是错误的......