资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

phppdo大数据 php转大数据

php中用参数传递的pdo查询语句怎么写

方法 bindParam() 和 bindValue() 非常相似。

10年积累的网站设计、成都网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有洛阳免费网站建设让你可以放心的选择与我们合作。

唯一的区别就是前者使用一个PHP变量绑定参数,而后者使用一个值。

所以使用bindParam是第二个参数只能用变量名,而不能用变量值,而bindValue至可以使用具体值。

复制代码 代码如下:

$stm = $pdo-prepare("select * from users where user = :user");

$user = "jack";

//正确

$stm-bindParam(":user",$user);

//错误

//$stm-bindParam(":user","jack");

//正确

$stm-bindValue(":user",$user);

//正确

$stm-bindValue(":user","jack");

另外在存储过程中,bindParam可以绑定为input/output变量,如下面:

复制代码 代码如下:

$stm = $pdo-prepare("call func(:param1)");

$param1 = "abcd";

$stm-bindParam(":param1",$param1); //正确

$stm-execute();

存储过程执行过后的结果可以直接反应到变量上。

对于那些内存中的大数据块参数,处于性能的考虑,应优先使用前者。

--------------------------------------------------

参数化查询

参数化查询(Parameterized Query 或 Parameterized Statement)是指在设计与数据库连结并访问数据时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值,这个方法目前已被视为最有效可预防SQL注入攻击 (SQL Injection) 的攻击手法的防御方式。有部份的开发人员可能会认为使用参数化查询,会让程序更不好维护,或者在实现部份功能上会非常不便[来源请求],然而,使用参数化查询造成的额外开发成本,通常都远低于因为SQL注入攻击漏洞被发现而遭受攻击,所造成的重大损失。

除了安全因素,相比起拼接字符串的 SQL 语句,参数化的查询往往有性能优势。因为参数化的查询能让不同的数据通过参数到达数据库,从而公用同一条 SQL 语句。大多数数据库会缓存解释 SQL 语句产生的字节码而省下重复解析的开销。如果采取拼接字符串的 SQL 语句,则会由于操作数据是 SQL 语句的一部分而非参数的一部分,而反复大量解释 SQL 语句产生不必要的开销。

目录

* 1 原理

* 2 SQL 指令撰写方法

o 2.1 Microsoft SQL Server

o 2.2 Microsoft Access

o 2.3 MySQL

o 2.4 PostgreSQL/SQLite

* 3 客户端程序撰写方法

o 3.1 ADO.NET

o 3.2 PDO

o 3.3 JDBC

o 3.4 Cold Fusion

[编辑] 原理

在使用参数化查询的情况下,数据库服务器不会将参数的内容视为SQL指令的一部份来处理,而是在数据库完成 SQL 指令的编译后,才套用参数运行,因此就算参数中含有具破坏性的指令,也不会被数据库所运行。

[编辑] SQL 指令撰写方法

在撰写 SQL 指令时,利用参数来代表需要填入的数值,例如:

[编辑] Microsoft SQL Server

Microsoft SQL Server 的参数格式是以 "@" 字符加上参数名称而成,SQL Server 亦支持匿名参数 "?"。

SELECT * FROM myTable WHERE myID = @myID

INSERT INTO myTable (c1, c2, c3, c4) VALUES (@c1, @c2, @c3, @c4)

[编辑] Microsoft Access

Microsoft Access 不支持具名参数,只支持匿名参数 "?"。

UPDATE myTable SET c1 = ?, c2 = ?, c3 = ? WHERE c4 = ?

[编辑] MySQL

MySQL 的参数格式是以 "?" 字符加上参数名称而成。

UPDATE myTable SET c1 = ?c1, c2 = ?c2, c3 = ?c3 WHERE c4 = ?c4

[编辑] PostgreSQL/SQLite

PostgreSQL 和 SQLite 的参数格式是以 “:” 加上参数名而成。当然,也支持类似 Access 的匿名参数。

UPDATE "myTable" SET "c1" = :c1, "c2" = :c2, "c3" = :c3 WHERE "c4" = :c4

[编辑] 客户端程序撰写方法

在客户端代码中撰写使用参数的代码,例如:

[编辑] ADO.NET

ADO.NET用于ASP.NET之内。

SqlCommand sqlcmd = new SqlCommand("INSERT INTO myTable (c1, c2, c3, c4) VALUES (@c1, @c2, @c3, @c4)", sqlconn);

sqlcmd.Parameters.AddWithValue("@c1", 1); // 设定参数 @c1 的值。

sqlcmd.Parameters.AddWithValue("@c2", 2); // 设定参数 @c2 的值。

sqlcmd.Parameters.AddWithValue("@c3", 3); // 设定参数 @c3 的值。

sqlcmd.Parameters.AddWithValue("@c4", 4); // 设定参数 @c4 的值。

sqlconn.Open();

sqlcmd.ExecuteNonQuery();

sqlconn.Close();

[编辑] PDO

PDO用于PHP之内。 在使用 PDO 驱动时,参数查询的使用方法一般为:

复制代码 代码如下:

// 实例化数据抽象层对象

$db = new PDO('pgsql:host=127.0.0.1;port=5432;dbname=testdb');

// 对 SQL 语句执行 prepare,得到 PDOStatement 对象

$stmt = $db-prepare('SELECT * FROM "myTable" WHERE "id" = :id AND "is_valid" = :is_valid');

// 绑定参数

$stmt-bindValue(':id', $id);

$stmt-bindValue(':is_valid', true);

// 查询

$stmt-execute();

// 获取数据

foreach($stmt as $row) {

var_dump($row);

}

[code]

对于 MySQL 的特定驱动,也可以这样使用:

$db = new mysqli("localhost", "user", "pass", "database");

$stmt = $mysqli - prepare("SELECT priv FROM testUsers WHERE username=? AND password=?");

$stmt - bind_param("ss", $user, $pass);

$stmt - execute();

值得注意的是,以下方式虽然能有效防止 SQL注入 (归功于 mysql_real_escape_string 函数的转义),但并不是真正的参数化查询。其本质仍然是拼接字符串的 SQL 语句。

[code]

$query = sprintf("SELECT * FROM Users where UserName='%s' and Password='%s'",

mysql_real_escape_string($Username),

mysql_real_escape_string($Password));

mysql_query($query);

[编辑] JDBC

JDBC用于Java之内。

java.sql.PreparedStatement prep = connection.prepareStatement(

"SELECT * FROM `users` WHERE USERNAME = ? AND PASSWORD = ?");

prep.setString(1, username);

prep.setString(2, password);

prep.executeQuery();

[编辑] Cold Fusion

cfquery name="Recordset1" datasource="cafetownsend"

SELECT *

FROM COMMENTS

WHERE COMMENT_ID =cfqueryparam value="#URL.COMMENT_ID#" cfsqltype="cf_sql_numeric"

/cfquery

PHP怎么用PDO同时插入多条数据?

数组表单后面不需要加数字标签,会自动编码。

见以下代码:

!DOCTYPE html

html lang="zh-CN"

head

meta charset="utf-8"

titleTest/title

/head

body

form method="post"

input type="text" name="age[]"

textarea name="name[]"/textarea

hr

input type="text" name="age[]"

textarea name="name[]"/textarea

hr

input type="text" name="age[]"

textarea name="name[]"/textarea

hr

input type="text" name="age[]"

textarea name="name[]"/textarea

hr

input type="text" name="age[]"

textarea name="name[]"/textarea

hr

button type="submit"提交/button

/form

?php

if(!empty($_POST)){

$pdo   = new PDO("mysql:host=localhost;dbname=t1","root","");

$stmt  = $pdo-prepare("insert into t2(age,name)values(:age,:name)");

$ages  = $_POST['age'];

$names = $_POST['name'];

foreach($ages as $key = $age){

if(trim($age) || trim($names[$key])){

$stmt-execute(array(':age'=$age,':name'=$names[$key]));

}

}

}

?

/body

/html

php 怎么解决 大数据量 插入数据库

ini_set('max_execution_time','0');

$pdo = new PDO("mysql:host=localhost;dbname=test","root","123456");

$sql = "insert into test(name,age,state,created_time) values";

for($i=0; $i100000; $i++){

$sql .="('zhangsan',21,1,'2015-09-17')";

}

$sql = substr($sql,0,strlen($sql)-1);

var_dump($sql);

if($pdo - exec($sql)){

echo "插入成功!";

echo $pdo - lastinsertid();

}

试试吧。10万条1分钟多,我觉得还行

PHP实现的pdo连接数据库并插入数据功能简单示例

本文实例讲述了PHP实现的pdo连接数据库并插入数据功能。分享给大家供大家参考,具体如下:

创建配置文件

pdo_config.php

?php

$db_Type

=

"mysql";//数据库类型

$host

=

"localhost";//主机名

$dbName

=

"test";//数据库名

$userName

=

"root";//用户名

$password

=

"root";//密码

$dsn

=

"{$db_Type}:host={$host};dbname={$dbName}";

?

pdo插入数据库

pdo_insert.php

?php

header('Content-type:text/html;

charset=utf-8');

require

'pdo_config.php';

try{

$pdo

=

new

PDO

($dsn,$userName,$password);//创建一个连接对象

$pdo-exec('set

names

utf8');//设置编码

$sql

=

"INSERT

student

(name,email)

VALUES

('李四','123@qq.com')";

$pdo-exec($sql);

}catch

(PDOException

$e){

die('操作失败'.$e-getMessage());

}

//关闭连接

$pdo

=

null;

?

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP基于pdo操作数据库技巧总结》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:关于php连接mssql:pdo

odbc

sql

serverPHP5中使用PDO连接数据库的方法PHP中PDO连接数据库中各种DNS设置方法小结ThinkPHP框架基于PDO方式连接数据库操作示例PHP使用ODBC连接数据库的方法tp5(thinkPHP5)框架连接数据库的方法示例PHP7使用ODBC连接SQL

Server2008

R2数据库示例【基于thinkPHP5.1框架】tp5(thinkPHP5)操作mongoDB数据库的方法thinkPHP5实现数据库添加内容的方法tp5(thinkPHP5)框架数据库Db增删改查常见操作总结PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】

中软卓越php大数据课程学哪些知识,谁说一下。

首先是向了解PHP呢还是大数据呢?不过想都拿下的话,不是一朝一夕的,步子迈得太大,不好,技在于精而后于多。

先说PHP:最基本其实就是web前端基础;第二的话包括PHP语言基础、Ajax、数据库强化、运行环境及配置、面向对象OOADUML等;第三就是主流框架的掌握了,Smarty、PDO等

再说大数据:

基础阶段:Linux、Docker、KVM、MySQL基础、Oracle基础、MongoDB、redis。

hadoop mapreduce hdfs yarn:hadoop:Hadoop 概念、版本、历史,HDFS工作原理,YARN介绍及组件介绍。

大数据存储阶段:hbase、hive、sqoop。

大数据架构设计阶段:Flume分布式、Zookeeper、Kafka。

大数据实时计算阶段:Mahout、Spark、storm。

大数据数据采集阶段:Python、Scala。

大数据商业实战阶段:实操企业大数据处理业务场景,分析需求、解决方案实施,综合技术实战应用。


网站栏目:phppdo大数据 php转大数据
文章地址:http://cdkjz.cn/article/docohhg.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220