文档章节

2016年9月

pavols
 pavols
发布于 2016/09/26 10:01
字数 740
阅读 4
收藏 0

PHP连接mysql的三种方式

第一种原始连接方式(面向过程)

<?php
$host = 'localhost';
$database = 'test';
$username = 'root';
$password = 'root';
$selectName = 'harry';//要查找的用户名,一般是用户输入的信息
$insertName = 'testname';

$connection = mysql_connect($host, $username, $password);//连接到数据库
mysql_query("set names 'utf8'");//编码转化
if (!$connection) {
    die("could not connect to the database.\n" . mysql_error());//诊断连接错误
}
$selectedDb = mysql_select_db($database);//选择数据库
if (!$selectedDb) {
    die("could not to the database\n" . mysql_error());
}
$selectName = mysql_real_escape_string($selectName);//防止SQL注入
$query = "select * from user where name = '$selectName'";//构建查询语句
$result = mysql_query($query);//执行查询
if (!$result) {
    die("could not to the database\n" . mysql_error());
}
while ($row = mysql_fetch_row($result)) {
    //取出结果并显示
    $name = $row[0];
    $age = $row[1];
    echo "Name: $name Age: $age \n";
}

//添加记录
$insertName = mysql_real_escape_string($insertName);//防止SQL注入
$insertSql = "insert into user(name, age) values('$insertName', 18)";
$result = mysql_query($insertSql);
echo $result . "\n";


//更新记录
$updateSql = "update user set age = 19 where name='$insertName'";
$result = mysql_query($updateSql);
echo $result . "\n";

//删除记录
$deleteSql = "delete from user where age = 19";
$result = mysql_query($deleteSql);
echo $result . "\n";

mysql_close($connection);//关闭连接

 

第二种 使用 mysqli扩展去连接数据库(半面向过程半面向对象)

<?php
$host = 'localhost';
$database = 'test';
$username = 'root';
$password = 'root';
$selectName = 'harry';//要查找的用户名,一般是用户输入的信息
$insertName = 'testname';

// 创建对象并打开连接,最后一个参数是选择的数据库名称
$mysqli = new mysqli($host, $username, $password, $database);

// 编码转化为 utf8
if (!$mysqli->set_charset("utf8")) {
    printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {
    printf("Current character set: %s\n", $mysqli->character_set_name());
}

if (mysqli_connect_errno()) {
    // 诊断连接错误
    die("could not connect to the database.\n" . mysqli_connect_error());
}

$selectedDb = $mysqli->select_db($database);//选择数据库
if (!$selectedDb) {
    die("could not to the database\n" . mysql_error());
}

if ($stmt = $mysqli->prepare("select * from user where name = ?")) {
    /* bind parameters for markers */
    $stmt->bind_param("s", $selectName);
    /* execute query */
    $stmt->execute();
    /* bind result variables */
    $stmt->bind_result($name, $age);

    /* fetch values */
    while ($stmt->fetch()) {
        echo "Name: $name Age: $age \n";
    }
    /* close statement */
    $stmt->close();
}

//添加记录
if ($insertStmt = $mysqli->prepare("insert into user(name, age) values(?, 18)")) {
    /* bind parameters for markers */
    $insertStmt->bind_param("s", $insertName);
    /* execute query */
    $insertStmt->execute();
    echo $insertStmt->affected_rows . "\n";
    /* close statement */
    $insertStmt->close();
}

//更新记录
if ($updateStmt = $mysqli->prepare("update user set age = 19 where name=?")) {
    /* bind parameters for markers */
    $updateStmt->bind_param("s", $insertName);
    /* execute query */
    $updateStmt->execute();
    echo $updateStmt->affected_rows . "\n";
    /* close statement */
    $updateStmt->close();
}

//删除记录
$result = $mysqli->query("delete from user where age = 19");
echo $result . "\n";

$mysqli->close();//关闭连接

 

第三种 使用PDO的方式去连接数据库(面向对象)

<?php
$host = 'localhost';
$database = 'test';
$username = 'root';
$password = 'root';
$selectName = 'harry';//要查找的用户名,一般是用户输入的信息
$insertName = 'testname';

$pdo = new PDO("mysql:host=$host;dbname=$database", $username, $password);//创建一个pdo对象
$pdo->exec("set names 'utf8'");
$sql = "select * from user where name = ?";
$stmt = $pdo->prepare($sql);
$rs = $stmt->execute(array($selectName));

if ($rs) {
    // PDO::FETCH_ASSOC 关联数组形式
    // PDO::FETCH_NUM 数字索引数组形式
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $name = $row['name'];
        $age = $row['age'];
        echo "Name: $name Age: $age \n";
    }
}

$oldAge = 18;
$insert = $pdo->prepare('insert into user(name, age) values(:name, :age)');
$insert->bindParam(':name', $insertName, PDO::PARAM_STR);
$insert->bindParam(':age', $oldAge, PDO::PARAM_INT);
$result = $insert->execute();
echo $result . "\n";

$newAge = 19;
$update = $pdo->prepare('update user set age = ? where name = ?');
$update->bindParam(1, $newAge, PDO::PARAM_INT);
$update->bindParam(2, $insertName, PDO::PARAM_STR);
$result = $update->execute();
echo $result . "\n";

$delete = $pdo->prepare('delete from user where age = ?');
$result = $delete->execute(array($newAge));
echo $result . "\n";

$pdo = null;//关闭连接

 

本文转载自:

pavols
粉丝 0
博文 11
码字总数 1485
作品 0
海淀
程序员
私信 提问
万国数据首次公开发布2016年第三季度财报

中国领先的高性能数据中心开发商和运营商万国数据服务有限公司(以下简称:万国数据)(纳斯达克股票代码:GDS)首次作为上市公司公开发布了截止2016年9月30日的第三季度未审计财务业绩。据财...

玄学酱
2018/05/02
0
0
【本地通知】重复提醒,今天发送的通知到第二天会同时蹦出2个

我的本意是,每天12点45,弹出一次提醒,所以我注册了周一至周日每天一个通知也就是一次注册了7个通知,按周重复 通知的重复间隔 localNotification.repeatInterval = NSCalendarUnitWeekday...

天行哥哥
2016/09/21
109
0
python控制台无法正常显示中文字符串解决方法

公告 encoding: utf-8 s = "哈哈"ss = u'哈哈' print s.decode('utf-8').encode('gbk')print ss.encode('gbk')...

老朱教授
2017/08/27
0
0
GNOME 3.22 确定发布日期

GNOME3.22确定将于2016年9月21日发布。 发布时间表草案内列出了各个日期内GNOME桌面将要发布的主要版本。 然而,下面列出的日期仍可能发生变化。 GNOME3.22将是下一个主要的稳定版本,而 GN...

oschina
2016/03/28
2.3K
5

没有更多内容

加载失败,请刷新页面

加载更多

GatewayWorker 报错:stream_socket_server(): unable to connect to tcp://0.0.0.0:1238

GatewayWorker 报错:stream_socket_server(): unable to connect to tcp://0.0.0.0:1238 (Address already in use) 官方文档虽然有相同的问题,但是对我的问题没起作用…… 后面发现自己手贱...

wenzhizhong
昨天
0
0
REST接口

文章来源 https://zhuanlan.zhihu.com/p/28674721?group_id=886181549958119424 http://www.ruanyifeng.com/blog/2014/05/restful_api.html REST 对请求的约定 REST 用来规范应用如何在 HTTP......

Airship
昨天
3
0
Spring Cloud Config 统一配置中心

Spring Cloud Config 统一配置中心 一、统一配置中心 统一管理配置 通常,我们会使用配置文件来管理应用的配置。如一个 Spring Boot 的应用,可以将配置信息放在 application.yml 文件中,如...

非摩尔根
昨天
2
0
android ------ AAPT2 error: check logs for details解决方法

AAPT 是全称是 Android Asset Packaging Tool,它是构建 App,甚至是构建 Android 系统都必不可少的一个工具。它的作用是将所有资源文件压缩打包到Android APK 当中。我们在 Android SDK 目录...

切切歆语
昨天
2
0
今天的学习

今天学到了<select></select>标签: <label for="unittype">Select unit type: </label><select id="unittype" name="unittype" autofocus > <option value="1"> Miner </option> ......

墨冥
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部