php - 文本中的 sprintf 和 % 符号

标签 php printf

我最近遇到的一个问题是,当尝试使用此代码更新我的数据库中的字段时,它不起作用。我追溯到在正在更新的文本中有一个 % 符号($note,然后是 $note_escaped)...用 sprintf 虽然工作正常。

我不应该使用 sprintf 进行更新,还是应该以不同的方式形成?

我做了一些搜索,但找不到任何东西。

$id = mysql_real_escape_string($id);
$note_escaped = mysql_real_escape_string($note);
$editedby = mysql_real_escape_string($author);
$editdate = mysql_real_escape_string($date);
//insert info from form into database
$query= sprintf("UPDATE notes_$suffix SET note='$note_escaped', editedby='$editedby', editdate='$editdate' WHERE id='$id' LIMIT 1");

最佳答案

您使用的 sprintf 完全错误。删除代码中的函数调用仍然会做同样的事情。应该是:

sprintf("UPDATE notes_%s SET note='%s', editedby='%s', editdate='%s' WHERE id=%d LIMIT 1", $suffix, $note_escaped, $editedby, $editdate, $id);

你应该阅读手册。

关于php - 文本中的 sprintf 和 % 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2594044/

相关文章:

php - 只显示登录用户的记录

php - CodeIgniter Route 适用于 CIFS 挂载,但不适用于本地文件

c - 如何保存到文件?

C printf 到自定义硬件

c++ - 是否有不涉及 i/o 流的 mingw 库原生的就地字符串操作方法

php - 变量 $_GET 变量

php - 如何安排 PHP 程序按服务器上安排的时间间隔运行?

php - 病毒/恶意软件修改 Joomla CMS 网站上的 .htaccess

C -\r 在带有 nanosleep() 的 printf() 中不起作用

c - 在 sprintf 中隐藏整数