Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP printf生成sql查询_Php_Mysql_Sql_Printf - Fatal编程技术网

使用PHP printf生成sql查询

使用PHP printf生成sql查询,php,mysql,sql,printf,Php,Mysql,Sql,Printf,我试图用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 I

我试图用
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
的版本有什么问题?

而不是
printf()
使用:

不要使用
printf()


您正在查找
sprintf
,因为您想存储查询字符串以供以后使用。

您正在查找
sprintf
,因为您想存储查询字符串以供以后使用。

此处使用sprintf是因为

sprintf具有原始printf的所有格式化功能,这意味着您可以做的不仅仅是在字符串中插入变量值


例如,指定数字格式(十六进制、十进制、八进制)、小数位数、填充等。用谷歌搜索printf,你会发现很多例子。关于printf的维基百科文章应该让您开始学习。

这里使用sprintf是因为

sprintf具有原始printf的所有格式化功能,这意味着您可以做的不仅仅是在字符串中插入变量值

例如,指定数字格式(十六进制、十进制、八进制)、小数位数、填充等。用谷歌搜索printf,你会发现很多例子。关于printf的维基百科文章应该让您开始学习。

我建议您使用。PDO有一些命名参数(look),可以满足您的需要(另外它还负责转义和消毒)

我建议您使用。PDO具有满足您需要的命名参数(look)(加上它负责转义和清理)

要在数据库中将“null”视为空值,是否不必为“”

$query = sprintf("INSERT INTO author VALUES ('','%s','%s','%s','','','','','')", 
$command['pseudonym'],$command['name'],$command['surname']);
当然可能是错误的…

要在数据库中将“null”视为空值,不是必须是“”吗

$query = sprintf("INSERT INTO author VALUES ('','%s','%s','%s','','','','','')", 
$command['pseudonym'],$command['name'],$command['surname']);

当然可能是错的…

哦,我的上帝!这太尴尬了。我从几天前开始使用PHP,所以我不知道printf和sprintf的两个版本:我的天哪!这太尴尬了。我从几天开始使用PHP,所以我不知道printf和sprintf的两个版本:我从几天开始使用PHP,我在一本非常基础的书上学习了它:Robin Nixon的《学习PHP、MySQL、JavaScript、CSS和HTML5第三版》。它没有提到PDO。我一定要看一看。谢谢,我从几天前开始使用PHP,我在一本非常基础的书中学习了它:Robin Nixon的《学习PHP、MySQL、JavaScript、CSS和HTML5第三版》。它没有提到PDO。我一定要看一看。非常感谢。