我正在尝试如何最好地在PHP中准备我的SQLite SQL字符串. SQLite3类附带了一个escapeString()函数,但这是我的问题:

尝试1)

$sql = "INSERT INTO items ('id','content','title','created') VALUES ('4e7ce7c18aac8', 'Does this work', NULL, '2011-09-23T16:10:41-04:00');";

$sql = SQLite3::escapeString( $sql );

echo ($sql);

这导致一个字符串全部被抬起:

INSERT INTO items (”id”,”content”,”title”,”created”) VALUES

(”4e7ce7c18aac8”, ”Does this work”, NULL,

”2011-09-23T16:10:41-04:00”);

这些不是双引号,而是双引号单引号.显然不行.

尝试2)

$sql = 'INSERT INTO items ("id","content","title","created") VALUES ("4e7ce7c18aac8", "Does this work", NULL, "2011-09-23T16:10:41-04:00");';

$sql = SQLite3::escapeString( $sql );

echo ($sql);

这导致:

INSERT INTO items (“id”,”content”,”title”,”created”) VALUES

(“4e7ce7c18aac8”, “Does this work”, NULL,

“2011-09-23T16:10:41-04:00”);

这个查询工作正常,但是escapeString函数没有修改任何东西,因为没有什么可以逃脱的……

尝试3)

$sql = 'INSERT INTO items ("id","content","title","created") VALUES ("4e7ce7c18aac8", "Doesn't this work", NULL, "2011-09-23T16:10:41-04:00");'; $sql = SQLite3::escapeString( $sql ); echo ($sql);

这是一个大问题 – 现在我的一个值中有一个撇号.它甚至不会使它成为escapeString()因为PHP将在无效字符串上抛出错误:

PHP Parse error: syntax error, unexpected T_VARIABLE, expecting ‘,’

or ‘;’

我该怎么接近这个?请记住,在实际代码中,我的参数值将是变量,所以我应该在将每个变量传递给字符串之前将其转义?如果是这样,我会使用什么功能?

最后,escapeString()有什么意义?我无法弄清楚应该如何正确使用它.

解决方法:

您无法转义整个查询.您可以转义要插入查询的不安全数据,例如

$unsafe = $_GET['nastyvar'];

$safe = SQLite3::escapeString($unsafe);

$sql = "INSERT INTO table (field) VALUES ($safe);";

echo ($sql);

标签:php,sql,sqlite,escaping,escapestring

来源: https://codeday.me/bug/20190716/1482165.html

php sqlite3 sql,在PHP中准备SQLite SQL语句相关推荐

  1. java中删除sqlite数据库语句_sqlite sql创建数据库语句

    iOS开发数据库篇-SQLite常用的函数 一.简单说明 1.打开数据库 int sqlite3_open( const char *filename, // 数据库的文件路径 sqlite3 **p ...

  2. dede 模板 php sql,dedecms模板中使用{dede:sql=””}实现分页功能详解

    相信很多使用织梦dedecms的朋友在网上查找关于dede:sql标签进行分页的解决方案时都不尽如人意,尤其是在列表页使用dede:sql调用外部数据(所谓调用外部数据就是指在后台只是创建个空栏目,然 ...

  3. oracle中的pl SQL,Oracle数据中的PL/SQL介绍

    PL/SQL是Procedure Language Sturtured Query Language的缩写.PL/SQL的优点:有利于客户/服务器环境应用的性能提高.PL/SQL是 什么是Pl/SQL ...

  4. java中删除sqlite数据库语句_sqlite数据库的介绍与java操作sqlite的实例讲解

    sqlite数据库的介绍与java操作sqlite的实例讲解 发布时间:2020-10-03 05:40:34 来源:脚本之家 阅读:92 作者:Lee_Tech sqlite是啥? 1.一种轻型数据 ...

  5. php阻止输入sql,在PHP中全面阻止SQL注入式攻击之三

    一. 建立一个安全抽象层 我们并不建议你手工地把前面介绍的技术应用于每一个用户输入的实例中,而是强烈推荐你为此创建一个抽象层.一个简单的抽象是把你的校验方案加入到一个函数中,并且针对用户输入的每一项调 ...

  6. Visual C# 2008+SQL Server 2005 数据库与网络开发--9.1.1 SQL Server 2005中的XML功能

    在SQL Server 2005中,对XML的支持已经集成到数据库本身的所有组件中,主要包括以下几方面. 支持XML格式的数据类型. 可以对XML格式的数据或者变量进行XQuery的查询. 增强了XM ...

  7. SQL Server数据库中批量导入数据的四种方法总结

    在软件项目实施的时候,数据导入一直是项目人员比较头疼的问题.其实,在SQL Server中集成了很多成批导入数据的方法.有些项目实施顾问头疼的问题,在我们数据库管理员眼中,是小菜一碟.现在的重点就是, ...

  8. SQL Server 2005中专用管理员连接 (DAC) 使用技巧修改系统表的方法

    Server 2005 专用管理员连接 (DAC) 使用技巧 1 什么是专用管理员连接? SQL Server 2005 为管理员提供了一种特殊的诊断连接,以供在无法与服务器建立标准连接时使用. 2 ...

  9. sql中截取字符串函数_SQL Server 2017中的顶级SQL字符串函数

    sql中截取字符串函数 SQL Server 2017 has been in the talk for its many features that simplify a developer's l ...

最新文章

  1. QIIME 2教程. 26为QIIME 2开发新插件DevelopingPlugin(2021.2)
  2. HTML添加首页,添加首页分类推荐.html
  3. 艾伟也谈项目管理,说说我们项目组的考核
  4. java split 逗号_java截取之空字符丢失
  5. OpenGL 光照贴图Lighting maps
  6. linux之用一张图片说明文件系统结构
  7. 什么是光纤以太网交换机?
  8. mysql text类型 使用方法_MySQL使用TEXT/BLOB类型的知识点详解
  9. 软件测试要经过哪几个阶段?
  10. mysql新用户不能创建数据库中_MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限...
  11. fanuc机器人控制柜接线_工业机器人控制柜及使用方法
  12. HarryPotter第一部—Aragog-1.0.2
  13. 算法(Java)——双指针
  14. typora定制主题分享--绿豆沙背景主题+新night背景主题
  15. Premiere室内背景场景MG动画PR素材MOGRT Vol.2
  16. 04 vue3 scss 组件component kepp-alive缓存子组件 nextTick
  17. uniapp获取通知栏内容 监听通知栏信息
  18. 进程和线程的区别是什么
  19. R语言条件逻辑回归-因变量是配对资料
  20. 洛谷P3853 [TJOI2007]路标设置

热门文章

  1. DES加密实现的思想及代码
  2. Top 10 steps to optimize data access in SQL Server
  3. android- 9patch
  4. R6034--ARCENGINE
  5. 复盘-电商产品「分类」功能迭代
  6. 贯穿产品运营过程的三个用户思维
  7. 咖友推荐|我是窝窝酱,我来了,你在哪儿?
  8. 浅谈产品的用户画像:它并不是万能的
  9. 【干货】产品经理常忽略的用户研究的四大误区
  10. PowerShell删除Exchange 2010邮件的正确姿势