首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PDO INSERT INSERT[ BindingParam中没有错误,但没有数据发送到数据库

PDO是PHP中的一个数据库访问抽象层,用于与各种类型的数据库进行交互。INSERT是一种SQL语句,用于向数据库中插入新的数据记录。

在使用PDO的INSERT语句时,如果BindingParam中没有错误但没有数据发送到数据库,可能有以下几个可能的原因:

  1. 数据未正确绑定:在使用PDO的BindingParam方法时,需要确保正确地绑定了参数。参数绑定可以通过占位符(如:placeholder)或者问号(?)来实现。确保占位符或问号的数量和参数的数量一致,并且参数的值已经正确地绑定到了对应的占位符或问号上。
  2. 数据类型不匹配:在绑定参数时,需要确保参数的数据类型与数据库表中对应列的数据类型一致。如果数据类型不匹配,可能会导致数据无法正确插入到数据库中。
  3. 数据库连接未正确设置:在使用PDO进行数据库操作之前,需要确保已经正确地建立了数据库连接。可以使用PDO的构造函数或者相关方法来创建数据库连接,并且确保连接参数正确设置。
  4. 数据库操作未执行:在绑定参数之后,需要使用PDO的execute方法来执行数据库操作。确保在绑定参数之后,调用了execute方法来执行INSERT语句,将数据发送到数据库中。

综上所述,如果在PDO的INSERT语句中BindingParam中没有错误但没有数据发送到数据库,可以检查参数绑定、数据类型匹配、数据库连接设置和数据库操作执行等方面的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PDO扩展PDO::ATTR_AUTOCOMMIT 出坑记

问题描述 我自己以swoole扩展为基础,封装了一个异步任务服务器框架,数据库操作使用pdo扩展,但是在插入数据的时候,出现了异常情况,具体状况如下: MyISAM 表引擎的insert正常插入,没有问题...语句发送到mysql端了 查看innodb engine状态 怀疑是不是死锁了,查看innodb 的状态 show engine innodb status; 没有发现异常 到这里,已经有些抓狂了 然后...google,各种尝试,都不得要领 柳暗花明 纠结了挺长时间,后来看到有人说innodb引擎把insert当作一个事物处理,瞬间想到了一个问题,是不是pdo扩展里面,没有自动提交?...直接写了个简单的mysql pdo 连接数据库,并且插入数据到innodb表里面,结果没有任何问题,成功了,然后我就想到pdo里面有个参数PDO::ATTR_AUTOCOMMIT,是不是他在作怪?...连接数据库的时候,options里面设置 PDO::ATTR_AUTOCOMMIT 为 1 插入操作的时候,自己执行commit,显式的完成一次事务,我采用了这个方法 遗留问题是,同样的PHP版本,为啥单独的连接

89320

PDO详解

2.在数据库建立test数据库和一张test表,如下图所示 ? 在服务器目录下新建一个php脚本如下: <?...name=HeCheng 数据库执行对应的SQL语句如下 select * from test where name=’HeCheng’; 如果一些不良客户构造这样的请求如: http://127.0.0.1...test(name) values(‘WangGang’)”);//这条语句是错误的,无法执行 $db->commit(); 在这段代码,因为使用了事务机制,第二个插入语句错误会导致第一个插入语句也不会生效...六、PDO的效率问题 PDO比mysql、mysqli的连接更为稳定,但在效率上却不一定比直连更好。而且在实际应用数据库迁移的情况不是很多,PDO更无法保证一次编写,到处运行。...所以推荐在新应用中考虑使用PDO,在旧的应用没有必要进行重构。

2K81

PHPPDO操作学习(二)预处理语句及事务

PDO::ATTR_CURSOR 是设置数据库游标的类型,而 PDO::CURSOR_FWDONLY 的意思是创建一个只进游标的 PDOStatement 对象。...此为默认的游标选项,因为此游标最快且是 PHP 中最常用的数据访问模式。关于数据库游标的知识大家可以自行查阅相关的内容。...在 PHP操作数据库的预处理语句 这篇文章中有详细的示例。 事务能力 关于事务想必大家也都有一定的了解,所以在这里也不介绍具体的概念了,我们只看看在 PDO 事务是如何实现的。...commit() 方法就是操作过程没有出现意外的话,就将在 beginTransaction() 之后的所有数据操作一起打包提交。...在这里我们需要注意的是,PDO 对象最好指定错误模式为抛出异常,如果不指定错误模式的话,事务中出现的错误也不会直接报错,而是返回错误码,我们需要通过错误码来确定是否提交或回滚。

96100

PHP的PDO事务与自动提交

事务操作也可以根据请求自动撤销(假设还没有提交),这使得在脚本处理错误更加容易。 事务通常是通过把一批更改”积蓄”起来然后使之同时生效而实现的;这样做的好处是可以大大地提供这些更改的效率。...不幸的是,并非每种数据库都支持事务,因此当第一次打开连接时,PDO 需要在所谓的”自动提交”模式下运行。...自动提交模式意味着,如果数据库支持,运行的每个查询都有它自己的隐式事务,如果数据库不支持事务,则没有。 如果需要一个事务,则必须用PDO::beginTransaction() 方法来启动。...如果某些运行时条件意味着事务不可用,且数据库服务接受请求去启动一个事务,PDO::beginTransaction()将仍然返回 TRUE 而且没有错误。...两个更新分别完成起来很简单,通过封闭在PDO::beginTransaction()和PDO::commit()调用,可以保证在更改完成之前,其他人无法看到这些更改。

1.2K31

PHP学习笔记——MySQL的多种连接方法

/ 设置 PDO 错误模式为异常 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 预处理 SQL...---- 创建 ODBC 连接 通过一个 ODBC 连接,您可以连接到您的网络的任何计算机上的任何数据库,只要 ODBC 连接是可用的。...这是创建到达 MS Access 数据库的 ODBC 连接的方法: 在控制面板打开管理工具图标。 双击其中的**数据源(ODBC)**图标。 选择系统 DSN 选项卡。...点击系统 DSN 选项卡的添加。 选择Microsoft Access Driver。点击完成。 在下一个界面,点击选择来定位数据库。 为数据库起一个数据源名(DSN)。 点击确定。...odbc_close($conn); ---- ODBC 实例 下面的实例展示了如何首先创建一个数据库连接,接着创建一个结果集,然后在 HTML 表格显示数据。 <?

3K20

PHPPDO操作学习(二)预处理语句及事务

PDO::ATTR_CURSOR 是设置数据库游标的类型,而 PDO::CURSOR_FWDONLY 的意思是创建一个只进游标的 PDOStatement 对象。...此为默认的游标选项,因为此游标最快且是 PHP 中最常用的数据访问模式。关于数据库游标的知识大家可以自行查阅相关的内容。...在 PHP操作数据库的预处理语句 这篇文章中有详细的示例。 事务能力 关于事务想必大家也都有一定的了解,所以在这里也不介绍具体的概念了,我们只看看在 PDO 事务是如何实现的。...commit() 方法就是操作过程没有出现意外的话,就将在 beginTransaction() 之后的所有数据操作一起打包提交。...这样远没有异常机制来的简洁直观。 总结 我们简单的梳理并学习了一下 PDO 的预处理和事务相关的知识,接下来就要进入 PDOStatement 对象相关内容的学习。

96610

PHP中用PDO查询Mysql来避免SQL注入风险的方法

PDO(PHP Data Object) 是PHP5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理,如 php_mysql.dll。...1、PDO配置 使用PDO扩展之前,先要启用这个扩展,PHP.ini,去掉"extension=php_pdo.dll"前面的";"号,若要连接数据库,还需要去掉与PDO相关的数据库扩展前面的";"号...4、PDO常用方法及其应用 PDO::query()主要是用于有记录结果返回的操作,特别是SELECT操作 PDO::exec()主要是针对没有结果集合返回的操作,如INSERT、UPDATE等操作 PDO...5、PDO操作MYSQL数据库实例 $pdo = new PDO("mysql:host=localhost;dbname=db_demo","root",""); if($pdo -> exec("insert...发送过去,没有用户提交的数据;当调用到 execute()时,用户提交过来的值才会传送给数据库,他们是分开传送的,两者独立的,SQL攻击者没有一点机会。

2.3K80

PDO 用法学习「建议收藏」

PDO: php data object 数据库访问抽象层 基于驱动: 1、安装扩展 php_pdo.dll 2、安装驱动 php_pdo_mysql.dll linux 编译时参数:–with-pdo...mysqli方法少,常量多 dsn:data source name(数据源) 包括 主机、库名、驱动名 #部分参数可以省略,参数没有顺序 mysql: #最短 会自动调取 php.in mysql.default_host...$e){ echo "数据库连接失败:"....这种安全措施有助于在脚本意外终止时避免出现不一致的情况——如果没有显式地提交事务,那么假设是某个地方出错了,所以执行回滚来保证数据安全。...4、在事务,lastInsertId 应该用在 commit之前,否则会得到 0 5、对于大多数数据库,PDOStatement::rowCount() 不能返回受一条 SELECT 语句影响的行数。

3.7K31

【Laravel系列4.1】连接数据库与原生查询

连接数据库与原生查询 在 PHP 的学习数据库,也就是 MySQL 就像它的亲兄弟一样,永远没法分家。同理,在框架数据库相关的功能也是所有框架必备的内容。...当然,本身数据库也是 WEB 开发的核心,所以一个框架对于数据库的支持的好坏,也会影响到它的普及。...从 options 这个参数里面,我们可以看出,Laravel 默认使用的是 PDO 连接的数据库,我也没有研究在 Laravel 如何使用 mysqli 进行连接,因为 PDO 确实已经是事实的连库标准了...没错,前面也说过,本身 Laravel 的数据库操作就是使用的 PDO 的,不记得的小伙伴可以移步 【PHPPDO操作学习(四)查询结构集】https://mp.weixin.qq.com/s/dv-lnEGV0JlGsjy4rl_jkw...首先,我们新建一个数据库,就叫 laravel8 好了,并且同样的建立一个 raw_test 表,然后就是在 .env 配置这个数据库的连接信息。

3.2K50

PHP 的转义函数小结

一个使用 addslashes() 的例子是当你要往数据库输入数据时。 例如,将名字 O’reilly 插入到数据库,这就需要对其进行转义。...这些sql语句从参数,分开的发送到数据库服务端,进行解析。这样黑客不可能插入恶意sql代码。...去连接Mysql数据库时,真正的预处理默认并没有开启。...>setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 在上面的例子里,错误模式严格意义上来说没有必要,推荐你加上去。...因为有些查询语句并不适合使用PDO 进行处理,可能使用PDO处理比较困困难,于是就有一些没有做处理,还有就是有些挂羊头卖狗肉(估计开发的也不懂PDO),真正用的时候还是老方法,再有就是开发人员对PDO本地预处理的错误开放

3.2K20

掌握PHP PDO数据库世界的魔法师

它提供了一组类和方法,使得在PHP应用程序执行数据库查询和操作变得更加简单和安全。PDO通过使用面向对象的方式来处理数据库操作,提供了更加灵活和可维护的代码结构。1.2 为什么选择PDO?...扩展性: PDO相对于MySQLi具有更好的扩展性,因为它支持多种类型的数据库,并且可以通过自定义驱动程序进行扩展。基础知识2.1 连接数据库PDO,连接到数据库非常简单。...第三个参数指定了参数的数据类型,这是可选的,推荐使用以确保安全性。2.5 获取结果执行查询后,您可以使用fetch()方法获取查询结果。...;在上面的示例,我们给予了一个用户对数据库的SELECT、INSERT、UPDATE和DELETE权限。...使用游标: 使用PDO的游标功能(例如PDO::ATTR_CURSOR)可以在数据库遍历大量数据,而不需要一次性将所有数据加载到内存

15221

PHP的MySQLi扩展学习(三)mysqli的基本操作

不过,今天的主角是 MySQLi 如何执行 SQL 语句以及多条 SQL 语句的执行。 连接与选择数据库 首先是一个小内容的学习分享,依然还是连接数据库,不过这次我们用另外一种方式来进行连接。...在实例化过程,我们并没有给 mysqli 的构造函数传递任何的参数,而是使用 real_connect() 方法来传递数据库服务器信息并建立连接。...$mysqli->select_db('mysql'); 就是这样一个简单的 select_db() 方法,就可以帮助我们在代码执行过程动态地修改所连接的数据库。...这就是它的特点,它也并没有直接将结果集的信息保存在程序的内存。所以,use_result() 方法最大的好处就是占用内存小,适合大量查询的遍历,缺点则是每次都要去数据库查询,速度慢。...总结 光说不练假把式,虽说多语句执行看似很美好,即使在这简单的测试代码,也会出现各种问题,大家一定要自己多尝试一下。

2.9K00

PHP的MySQLi扩展学习(三)mysqli的基本操作

不过,今天的主角是 MySQLi 如何执行 SQL 语句以及多条 SQL 语句的执行。 连接与选择数据库 首先是一个小内容的学习分享,依然还是连接数据库,不过这次我们用另外一种方式来进行连接。...在实例化过程,我们并没有给 mysqli 的构造函数传递任何的参数,而是使用 real_connect() 方法来传递数据库服务器信息并建立连接。...$mysqli->select_db('mysql'); 就是这样一个简单的 select_db() 方法,就可以帮助我们在代码执行过程动态地修改所连接的数据库。...这就是它的特点,它也并没有直接将结果集的信息保存在程序的内存。所以,use_result() 方法最大的好处就是占用内存小,适合大量查询的遍历,缺点则是每次都要去数据库查询,速度慢。...总结 光说不练假把式,虽说多语句执行看似很美好,即使在这简单的测试代码,也会出现各种问题,大家一定要自己多尝试一下。

2.9K20

PHP连接MySQL的几种方式及推荐

面向对象/面向过程/PDO 最先有的是面向过程的方式,后来学习其他语言添加的面向对象,而PDO是面向对象方式对所有数据库的一种封装。 PDO是PHP数据对象,PHP Data Object的缩写。...统一API能操作各种数据库,这样切换数据库不用修改代码了。 MySQLi和PDO API是在MySQL 4.1版本之后引入的,因此只有MySQL 5.0及以上版本才支持这两种API。...($dsn, $user, $pass); // 设置 PDO 错误模式,用于抛出异常 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION...($dsn, $user, $pass); // 设置 PDO 错误模式,用于抛出异常 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION...> 兼容MySQL8 mysql8默认php pdo无法连接问题 会报两个错误 错误1 PDO::__construct(): Server sent charset (255) unknown to

54230
领券