php ,MySQL操作的两种方式

本文省略php对MySQL的面向过程的操作方式,介绍最常用的,面向对象的操作方式和PDO方式

面向对象的操作方式:

<?php
$servername = "localhost";
$username = "username";
$password =
"password";

// 创建连接
$conn =
new mysqli($servername, $username, $password);

// 确定数据库,创建连接
//$conn =
new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

// 创建数据库
$sql = "CREATE DATABASE myDB";
if ($conn->query($sql) === TRUE) {
   
echo "数据库创建成功";
} else {
    echo
"Error creating database: " . $conn->error;
}

//选择数据库

mysql_select_db( ‘MyDB‘ );

// 使用 sql 创建数据表
	$sql
	= "CREATE TABLE MyGuests (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY
	KEY, firstname VARCHAR(30) NOT NULL,lastname VARCHAR(30) NOT NULL,email
	VARCHAR(50),reg_date TIMESTAMP)";

if ($conn->query($sql) === TRUE) {    echo "Table
	MyGuests created successfully";} else {    echo
	"创建数据表错误: " . $conn->error;}

//插入数据$sql = "INSERT INTO MyGuests (firstname, lastname, email)
	VALUES (‘John‘, ‘Doe‘, ‘[email protected]‘)";

if ($conn->query($sql) === TRUE) {    echo "新记录插入成功";} else {    echo
	"Error: " . $sql . "<br>" . $conn->error;}//插入多条数据$sql = "INSERT INTO MyGuests (firstname, lastname, email)
	VALUES (‘John‘, ‘Doe‘, ‘[email protected]‘);";
	$sql .= "INSERT INTO
	MyGuests (firstname, lastname, email)
	VALUES (‘Mary‘, ‘Moe‘, ‘[email protected]‘);";
	$sql .= "INSERT INTO
	MyGuests (firstname, lastname, email)
	VALUES (‘Julie‘, ‘Dooley‘, ‘[email protected]‘)";

if ($conn->multi_query($sql) === TRUE) {    echo "新记录插入成功";} else {    echo
	"Error: " . $sql . "<br>" . $conn->error;}

// 预处理及绑定$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email)
	VALUES(?, ?, ?)");$stmt->bind_param("sss", $firstname, $lastname,
	$email);

// 设置参数并执行$firstname = "John";$lastname
	= "Doe";$email = "[email protected]";$stmt->execute();

$firstname
	= "Mary";$lastname = "Moe";$email = "[email protected]";$stmt->execute();

$firstname = "Julie";$lastname = "Dooley";$email = "[email protected]";
	$stmt->execute();

echo "新记录插入成功";

$stmt->close();

//读取数据$sql = "SELECT id, firstname, lastname FROM MyGuests";$result
	= $conn->query($sql);

if ($result->num_rows > 0) {   
	// 输出每行数据    while($row = $result->fetch_assoc())
	{        echo "<br> id: ".
	$row["id"]. " - Name: ". $row["firstname"]. " " . $row["lastname"];   
	}} else {    echo "0 个结果";}

$conn->close();
?>

使用pdo方式

<?php
$servername = "localhost";

$username = "username";

$password = "password";

try {

$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);

// 设置 PDO 错误模式为异常

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "CREATE DATABASE myDBPDO";

// 使用 exec() ,因为没有结果返回

$conn->exec($sql);

echo "数据库创建成功<br>";

      // 使用 sql 创建数据表
   
$sql
= "CREATE TABLE MyGuests (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY
KEY,
    firstname VARCHAR(30) NOT NULL,
    lastname VARCHAR(30) NOT NULL,
    email
VARCHAR(50),
    reg_date TIMESTAMP
    )";
    // 使用 exec() ,没有结果返回
    $conn->exec($sql);
   
echo "数据表 MyGuests 创建成功";

//插入数据

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
   
VALUES (‘John‘, ‘Doe‘, ‘[email protected]‘)";
    // 使用 exec() ,没有结果返回
    $conn->exec($sql);
   
echo "新记录插入成功";

//插入多条数据

// 开始事务
   
$conn->beginTransaction();
    // SQL 语句
   
$conn->exec("INSERT INTO MyGuests (firstname, lastname, email)
   
VALUES (‘John‘, ‘Doe‘, ‘[email protected]‘)");
   
$conn->exec("INSERT INTO MyGuests (firstname, lastname, email)
   
VALUES (‘Mary‘, ‘Moe‘, ‘[email protected]‘)");
   
$conn->exec("INSERT INTO MyGuests (firstname, lastname, email)
   
VALUES (‘Julie‘, ‘Dooley‘, ‘[email protected]‘)");

// 提交事务
    $conn->commit();
   
echo "新记录插入成功";

// 预处理 SQL 并绑定参数
   
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email)

VALUES (:firstname, :lastname, :email)");
   
$stmt->bindParam(‘:firstname‘, $firstname);
    $stmt->bindParam(‘:lastname‘,
$lastname);
    $stmt->bindParam(‘:email‘, $email);

// 插入行
    $firstname =
"John";
    $lastname = "Doe";
   
$email = "[email protected]";
    $stmt->execute();

// 插入其他行
    $firstname = "Mary";
   
$lastname = "Moe";
    $email = "[email protected]";
   
$stmt->execute();

// 插入其他行
   
$firstname = "Julie";
    $lastname = "Dooley";
   
$email = "[email protected]";
    $stmt->execute();

echo "新记录插入成功";

//查询数据

$stmt = $conn->prepare("SELECT * FROM MyGuests");
    $stmt->execute();

// 设置结果集为关联数组
   
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);

foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as
$k=>$v) {
        echo $v;
   
}
    $stmt = null;
}

catch(PDOException $e)

{

echo $sql . "<br>" . $e->getMessage();

}

$conn = null;

?>

时间: 2024-10-14 14:05:09

php ,MySQL操作的两种方式的相关文章

21_django配置使用mysql数据库的两种方式

目录 配置django项目使用mysql数据库的两种方式 1. 直接在settings.py 文件中添加数据库配置信息 2. 将数据库配置信息存到一个文件中,在settings.py文件中将其引入.(推荐) 安装mysql驱动 1. 使用mysqlclient *推荐 2. 使用pymysql django2.2以上版本默认不支持使用了 配置django项目使用mysql数据库的两种方式 1. 直接在settings.py 文件中添加数据库配置信息 # 配置数据库的第一种方式 DATABASES

Python 防止mysql 注入的两种方式

Python防止sql注入一般有两种方法 1.escape_string MySQLdb.escape_string(param) 注意:如果报错出现 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128) # 因为用户输入的字符串的字符集是ascll,但是ascll不支持中文, 所以我们可以把python的默认字符集改成utf-8就可以了 2. excute参数化传递 cur.excute

scrapy数据存储在mysql数据库的两种方式

方法一:同步操作 1.pipelines.py文件(处理数据的python文件) import pymysql class LvyouPipeline(object): def __init__(self): # connection database self.connect = pymysql.connect(host='XXX', user='root', passwd='XXX', db='scrapy_test') # 后面三个依次是数据库连接名.数据库密码.数据库名称 # get c

IOS文件操作的两种方式:NSFileManager操作和流操作

1.文件的创建 -(IBAction) CreateFile { //对于错误信息 NSError *error; // 创建文件管理器 NSFileManager *fileMgr = [NSFileManager defaultManager]; //指向文件目录 NSString *documentsDirectory= [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; //创建一个目录 [[NSFi

mybatis(二)执行CRUD操作的两种方式配置和注解

一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper

清除一张mysql表的两种方式

第一种: delete from tablename #这条语句一般不会重建表,并且保留原来的auto_increment字段记录,并利用原来的auto_increment字段进行编号 第二种: truncate table tablename #这语句的执行效率会比delete更快,因为truncate删除了表然后重建它,delete删除记录,并没有去重建表 注意: truncate对事务处理是不安全的,比如truncate一张正在处理事务的表,这个命令就会产生错误并退出

基于aspectj实现AOP操作的两种方式——xml配置

1. 要导入的 jar 包: 常用的aspectj表达式: 权限修饰符可以省略,以下表示:返回值类型为任意,com.chy.service包以及其子包下的.任意类的.参数任意的.任意方法 execution(* com.chy.service..*(..) 2. 在spring的核心配置文件中: 总结: 1. 配置切入点 2. 配置切面:把哪个增强类的哪个方法,前置增强到哪个切入点上 原文地址:https://www.cnblogs.com/cn-chy-com/p/9256048.html

maven生成war包的两种方式

war包即对WEB应用程序进行打包,用于应用容器的部署.如在jboss中只要把war包丢入deploy目录下即可发布自己的应用了.打包方式有很多中,很多工具本身就支持此功能.下面主要介绍通过maven来操作的两种方式: 方法一: 即第一反应的那种啦,就是利用maven的maven-war-plugin. <build> <plugins> ...... <plugin> <groupId>org.apache.maven.plugins</groupI

WCF 客户端调用服务操作的两种方法

本节的主要内容:1.通过代理类的方式调用服务操作.2.通过通道的方式调用服务操作.3.代码下载 一.通过代理类的方式调用服务操作(两种方式添加代理类) 1.手动编写代理类,如下: 客户端契约: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; namespace y.WcfFirst.Client.Proxys { [Se