使用pdo,使用pdo无法插入数据怎么办

如果你使用了最新版的XAMPP,那么你几乎不用改变php.ini的设置,就可以使用pdo

but,插了一晚上,程序既不报错也不插入数据,真是气死人,后来发现是实例化pdo对象的时候没有指定字符集。所以一定设定字符集属性,否则极有可能插入数据失败

  • 一个插入多条数据的例子(用到了事务)
<?php
$dbtype = ‘mysql‘;
$dbname = ‘olddream‘;
$user = "root";
$pwd = "wenwajiao";
$ip=‘127.0.0.1‘;
$fuckingcharset = ‘utf8‘;
$dsn = "$dbtype:host=$ip;dbname=$dbname;charset=$fuckingcharset";
$pdo = new PDO($dsn,$user,$pwd);
$rows = $pdo->prepare("select userid,username from userlist");
$rows->execute();
$pdo->beginTransaction();
$ret = $rows->fetchAll();
//update rbac_user set mypass = ? where userid = ?
for($i=0;$i<count($ret);$i++)
{
    $sql = "insert into rbac_user (userid,username,mypass) values (?,?,?)";
    $statement=$pdo->prepare($sql);
    $statement->bindValue(1,$ret[$i][‘userid‘]);
    $statement->bindValue(2,$ret[$i][‘username‘]);
    $statement->bindValue(3,md5($ret[$i][‘userid‘]));
    $statement->execute();
}
$pdo->commit();
$pdo=null;
  • 插入一条数据
<?php
$dbtype=‘mysql‘;
$db = ‘olddream‘;
$ip=‘127.0.0.1‘;
$user=‘root‘;
$pwd = ‘wenwajiao‘;
$charset = ‘utf8‘;
$dsn = "$dbtype:host=$ip;dbname=$db;charset=$charset";
$pdo=new PDO($dsn,$user,$pwd);
$sql = "insert into rbac_user (userid,username,mypass) values (?,?,?)";
$statement=$pdo->prepare($sql);
$userid = ‘masterzhang‘;
$username = ‘张教练‘;
$pwd = md5(‘masterzhang‘);
$statement->bindValue(1,$userid,PDO::PARAM_STR);
$statement->bindvalue(2,$username,PDO::PARAM_STR);
$statement->bindvalue(3,$pwd,PDO::PARAM_STR);
$statement->execute();
?>

原文地址:https://www.cnblogs.com/saintdingspage/p/10807211.html

时间: 2025-01-18 11:27:13

使用pdo,使用pdo无法插入数据怎么办的相关文章

php的mysql\mysqli\PDO(三)PDO

原文链接:http://www.orlion.ga/1153/ PDO是一种数据库抽象层,不止可以访问mysql还可以访问其他数据库. 一.__construct() PDO::__construct ( string $dsn [, string $username [, string $password [, array$driver_options ]]] ) $dsn:通常,一个 DSN 由 PDO 驱动名.紧随其后的冒号.以及可选的驱动程序的数据库连接变量信息,如主机名.端口和数据库名

PDO类PDO、PDOStatement、PDOException

PDO中包含三个预定义的类,它们分别是PDO.PDOStatement.PDOException PDO: PDO->setAttribute(); 全局属性设置,包括:列名格式和错误提示类型 PDO->query($sql); 常用于执行有返回的sql查找语句,但执行之前要手动转义,返回PDOStatement对象 PDO->exec($sql); 执行没有返回的sql语句,同样要手动转义,有插入.修改.删除操作.返回影响的行数 PDO->lastInsertId(); 返回最后

Phalcon插入数据乱码

昨天晚上用PHP写程序的时候遇到一个特别纠结的问题,页面,mysql 字符集都校对成utf8了,但是只要通过Phalcon程序往数据库里跑数据,中文就都会变成乱码,今天在phalcon php群里@问路才不会迷路 朋友的帮助下完美解决这个问题,解决方法如下:在引导程序设置数据库连接处 加入 $di -> set('db',function() use($config)) {     return new \Phalcon\Db\Adapter\Pdo\Mysql(array(         '

mysql大批量插入数据的4种方法示例

前言 本文主要给大家介绍了关于mysql大批量插入数据的4种方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法一:循环插入 这个也是最普通的方式,如果数据量不是很大,可以使用,但是每次都要消耗连接数据库的资源. 大致思维如下 (我这里写伪代码,具体编写可以结合自己的业务逻辑或者框架语法编写) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 for($i=1;$i<=100;$i++){  $sql = 'insert...............';  /

php 往数据库插入数据脚本

<?php add_user_pwd(); /** * 添加密码账户到数据库 */ function add_user_pwd() { /* 连接mysql */ $type = 'mysql'; $dbname = 'jihua'; $host = '127.0.0.1'; $username = 'root'; $password = 'root'; $dsn = "$type:host=$host;dbname=$dbname"; try { $pdo = new PDO(

没有躲过的坑--map的初始化(插入数据)

最近工作中需要使用map,进行查询. 首先简单介绍一点map,也许是教科书里讲授最少的STL知识吧.但是在实际工作中map挺重要的,用于查找很方便快捷,尤其是以键和值的形式存在的! 1.头文件 #include<map> 2.map的功能 自动建立Key - value的对应.key 和 value可以是任意你需要的类型. 根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次. 快速插入Key - Value

php 获取最后插入数据的id

向mysql 插入数据时 很多时候 我们想知 道刚刚插入数据的id 这对我们很有用 下面我说出常用的三种 方法并一一分析其利与弊 一 用以下语句: mysql_query("select max(id) from t1",$link); 使用这种方法时 我们得到得是 id最大的值 的确时最后一个 但当多链接线程时 这个最大的id并不一定是 我们插入的所以这个不利用域线程 二 用以下函数: msyql_insert_id(); 当系统执行完INSERT后,再执行SELECT时,可能已经被

向mysql中批量插入数据的性能分析

MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下   CREATE TABLE example (example_id INT NOT NULL,name VARCHAR( 50 ) NOT NULL,value VARCHAR( 50 ) NOT NULL,other_value VARCHAR( 50 ) NOT NULL) 通常情况下单条插入的sql语句我们会这么写: 代码如下   INSERT INTO example(example_id, name, valu

MySQL创建数据库并插入数据

启动MySql 启动服务:sudo service mysql start 登陆:mysql -u root 新建数据库 CREATE DATABASE <数据库名>; 在大多数SQL系统中,并不区分大小写,但是习惯上:保留字大写,变量和数据小写 连接数据库 use <数据库名> 显示:Database changed,表示连接成功 数据表 数据表是数据库的重要组成部分,是数据在数据库中具体存放的位置 新建数据表:CREATE TABLE <表名> (< 列名1&