ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

PDO连接数据库

2021-10-28 13:31:28  阅读:170  来源: 互联网

标签:语句 exec 数据库 sql PDO SQL query 连接


上一篇文章为您介绍了“PHP数据库如何使用PDO连接数据库?”在PHP中,为您详细地介绍了如何通过PDO连接数据库,这篇文章让您继续了解PHP中如何使用PDO执行SQL语句。但愿能帮到你!

前几篇文章中,我们了解了PHP如何通过PDO连接数据库,如何只需执行SQL语句才能连接数据库。对于PDO,有三种方法可以用来执行SQL语句:exec()方法,query()方法,以及prepare()和execute()方法。那么下面我们就一起去看看。
exec()方法。
当执行这些SQL语句,如INSERT、UPDATE和DELETE时,我们可以使用PDO对象中的exec()方法,使用PDO对象的exec(),使用该方法成功执行后,返回的结果是受影响的行数,
exec()方法的语法格式如下:
1
PDO::exec(字符串$sql)
特别说明:
$sql为SQL语句执行。
exec()方法并没有从SELECT查询语句获得对应的结果。
下面,我们尝试通过实例向数据库添加一条数据,比如下面:
$dsn='mysql:host=127.0.0.1;dbname=test';
$user='root';
$pwd='root';
try{
$pdo=newPDO($dsn,$user);
$sql="insertintouser(name,age,sex)values('values','21','男性')";
$res=$pdo->exec($sql);
if($res)echo'成功添加了'.$res.'条数据!';
}catch(PDOException$e){
echo'数据库连接失败:'.$e->getMessage();
}
?>
输出结果:
从上面的例子可以看到,我们已经通过exec()方法成功地将一条数据添加到数据库,而返回的结果是接收到影响的行的数量。如果要返回一个对象,可以使用query()方法,下面我们来看看另一种执行SQL语句的方法:query()方法。
query()方法。
通过exec()方法,在上面的案例中可以返回这些不需要返回结果集的语句信息,而在执行SELECT查询语句时,我们需要通过query()语句。如果这个方法成功地实施,反悔家国家就是PDOStatement对象。
如果使用query()方法,并且希望知道得到的总行数,你可以使用rowCount()方法来获得PDOStatement对象。
方法的语法格式如下(query):
PDO::查询(字符串$sql)
PDO::query(string$sql,int$PDO::FETCH_COLUMN)
字符串$sql、int$PDO::FETCH_CLASS、string$classname、array$ctorargs)
PDO::query(string$sql,int$PDO::FETCH_INTO)
这些注意事项包括:
$sql为要执行的SQL语句;其余的参数用于设置语句的默认获取模式,与调用结果对象PDOStatement::setFetchMode()相同。
然后,我们将使用query()方法来查询前面添加的数据,比如下面:
$dsn='mysql:host=127.0.0.1;dbname=test';
$user='root';
$pwd='root';
try{
$pdo=newPDO($dsn,$user);
$sql="SELECT*FROMuserWHEREname='壹壹';
$res=$pdo->query($sql,PDO::FETCH_ASSOC);
print_r($res);
}catch(PDOException$e){
echo'数据库连接失败:'.$e->getMessage();
}
?>
输出结果:
这些方法中,使用query()和exec()有一些需要注意的地方:
query()和exec()都能执行所有SQL语句,只返回不同的值;
query()能完成所有exec()的功能;
对exec()应用select语句时,始终返回0;
若要查看具体查询结果,可通过foreach语句进行循环输出。
prepare()和execute()方法。
使用预处理语句的方法可以使实现更加高效,当有必要对传入不同参数进行迭代时,这就是这一点。如果使用PDOStatement对象中的execute()方法,使用PDOStatement对象中的execute()方法,准备将要执行的查询。然后,我们将看到prepare()和execute()方法。
prepare()方法有以下语法格式:
1
prepare(string$statement[,array$driver_options=array)
这些注意事项包括:
$statement表示必须是一个对目标数据库有效的SQL语句模板;
$driver_options表示为可选参数,是一个包含一个或多个关键值对的数组类型,设置返回的PDOStatement对象的属性。
execute()方法有以下语法格式:
1
PDOStatement::执行(array$input_parameters]
这些注意事项包括:
$input_parameters在要执行的SQL语句中,只有一个元素的数目与绑定在SQL语句中的参数数量相同。
SQL语句模板中可包含零个或多个占位标记,可以采用命名(:name)或问号(?)格式在其执行时,将以实际数据代替形式。
相同的SQL语句中,不能同时使用命名和问号形式,只能选择其中一个参数形式。若以占位标签命名,则标记名称必须是唯一的。
下一步,我们来看看使用已命名的参数占位符,查询指定的SQL语句,比如下面:
1
$dsn='mysql:host=127.0.0.1;dbname=test';
$user='root';
$pwd='root';
try{
$pdo=newPDO($dsn,$user);
$sql="SELECTname,age,sexFROMuserWHEREage=:age";
$sth=$pdo>prepare($sql);
$sth->execute([':age'=>11]);
$res1=$sth->fetchAll();
$sth->execute(array(':age'=>14));
$res2=$sth->fetchAll();
echo'
';
print_r($res1);
print_r($res2);
}catch(PDOException$e){
echo'数据库连接失败:'.$e->getMessage();
}
?>
输出结果:
上面的例子使用了参数占位符的命名形式,查询指定的SQL语句,下一步我们来看看使用问号形式的参数占位符,查询指定的SQL语句。
示例如下:
$dsn='mysql:host=127.0.0.1;dbname=test';
$user='root';
$pwd='root';
try{
$pdo=newPDO($dsn,$user);
$sql="SELECTname,age,sexFROMuserWHEREage=?ANDsex=?";
$sth=

标签:语句,exec,数据库,sql,PDO,SQL,query,连接
来源: https://www.cnblogs.com/cqcq023/p/15475191.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有