PHP与MySQL交互
<?php
$con = mysql_connect("localhost","root","12345"); $dbcharset = "utf8";
mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary");
if (!$con)
{
die('Could not connect: ' . mysql_error());
} // some code mysql_select_db("my_db", $con);
?>
1.php连接数据库
$mysqli = mysqli_connect("hostname", "username", "password", "database");
<?php
$mysqli = mysqli_connect("localhost", "root", "12345", "test");
//错误信息
if(mysqli_connect_errno()) {
//错误信息
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
} else {
//输出Host信息
printf("Host infomation: %s\n", mysqli_get_host_info($mysqli));
//显示关闭连接
mysqli_close($mysqli);
}
?>
旧版使用mysql函数集
2.查询
<?php
$mysqli = mysqli_connect("localhost", "root", "12345", "test");
//错误信息
if(mysqli_connect_errno()) {
//错误信息
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
} else {
$sql = "CREATE TABLE testTable (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, testField VARCHAR(75))";
$res = mysqli_query($mysqli, $sql);
if($res === TRUE) {
echo "Table testTable successfully created.";
} else {
//获取MYSQL错误信息
printf("Could not create table: %s\n", mysqli_error($mysqli));
}
//显示关闭连接
mysqli_close($mysqli);
}
?>
mysqli_error($mysqli)可以获取错误信息
3.mysqli_query使用Mysql数据
3.1避免SQL注入
在一个登陆过程中,查询过程大概如下
SELECT * FROM users WHERE name = '".$_POST['username']."';
假设username的值为 ' or '1' = '1
这会产生一个完整的查询如
SELECT * FROM users Where name = ' ' or '1' = 1;
这个查询结果总是为真。 这就是sql注入。
要避免注入就要限制用户的输入,比如特殊字符(and, or)等都禁止提交。
3.2插入数据
插入表单中的数据
表单提交页面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<form method="post" action="insert.php" >
<input type="text" name='testfield' />
<input type="submit" />
</form>
<body>
</body>
</html>
处理页面insert.php
<?php
$mysqli = mysqli_connect("localhost", "root", "12345", "test");
//错误信息
if(mysqli_connect_errno()) {
//错误信息
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
} else {
// 超全局变量$_POST访问表单
$clean_text = mysqli_real_escape_string($mysqli, $_POST['testfield']);
$sql = "INSERT INTO testTable (testField)
VALUES ('".$clean_text."')";
$res = mysqli_query($mysqli, $sql);
if($res === TRUE) {
echo "插入数据成功";
} else {
//获取MYSQL错误信息
printf("插入数据失败: %s\n", mysqli_error($mysqli));
}
//显示关闭连接
mysqli_close($mysqli);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
</body>
</html>
3.3php获取数据
3.31查询结果个数
<?php
$mysqli = mysqli_connect("localhost", "root", "12345", "test");
//错误信息
if(mysqli_connect_errno()) {
//错误信息
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
} else {
$sql = "SELECT * FROM testTable";
$res = mysqli_query($mysqli, $sql);
if($res) {
//mysqli_num_rows获取结果个数
$number_of_rows = mysqli_num_rows($res);
printf("拥有%s组结果:", $number_of_rows);
} else {
//获取MYSQL错误信息
printf("查询失败: %s\n", mysqli_error($mysqli));
}
//mysqli_free_result释放结果内存供其它脚本使用
mysqli_free_result($res);
//显示关闭连接
mysqli_close($mysqli);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
</body>
</html>
mysqli_free_result释放结果内存供其它脚本使用,mysqli_num_rows获取结果个数
3.32显示查询结果
<?php
$mysqli = mysqli_connect("localhost", "root", "12345", "test");
//错误信息
if(mysqli_connect_errno()) {
//错误信息
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
} else {
$sql = "SELECT * FROM testTable";
$res = mysqli_query($mysqli, $sql);
if($res) {
//mysqli_fetch_array获取每一行构成的数组
while ($newArray = mysqli_fetch_array($res, MYSQLI_ASSOC)) {
$id = $newArray['id'];
$testField = $newArray['testField'];
echo "第".$id."条的内容为".$testField."。";
}
} else {
//获取MYSQL错误信息
printf("查询失败: %s\n", mysqli_error($mysqli));
}
//mysqli_free_result释放结果内存供其它脚本使用
mysqli_free_result($res);
//显示关闭连接
mysqli_close($mysqli);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
</body>
</html>
更多的MySQLi部分http://www.php.net/mysqli
PHP与MySQL交互的更多相关文章
- mysql交互协议解析——mysql包基础数据、mysql包基本格式
mysql交互协议是开发mysql周边组件常用的协议,如JDBC,libmysql等等. 在此我们要认识到mysql交互协议其实是半双工的交互协议,至于为什么,这里就先挖个小坑,以后再填. 在探讨my ...
- Nodejs学习笔记(四)--- 与MySQL交互(felixge/node-mysql)
目录 简介和安装 测试MySQL 认识一下Connection Options MYSQL CURD 插入 更新 查询 删除 Nodejs 调用带out参数的存储过程,并得到out参数返回值 结束数据 ...
- Shell基础:Shell和Mysql交互
通过命令行和Mysql交互 [root]#mysql -uroot -p123 -e "show databases" -e: execute: 执行数据库命令 通过脚本和数据 ...
- Hadoop集群(第10期)_MapReduce与MySQL交互
2.MapReduce与MySQL交互 MapReduce技术推出后,曾遭到关系数据库研究者的挑剔和批评,认为MapReduce不具备有类似于关系数据库中的结构化数据存储和处理能力.为此,Google ...
- 与MySQL交互(felixge/node-mysql)
目录 简介和安装 测试MySQL 认识一下Connection Options MYSQL CURD 插入 更新 查询 删除 Nodejs 调用带out参数的存储过程,并得到out参数返回值 结束数据 ...
- Nodejs学习笔记(四)—与MySQL交互(felixge/node-mysql)
简介和安装 Node.js与MySQL交互操作有很多库,具体可以在 https://www.npmjs.org/search?q=mysql 查看. 我选择了felixge/node-mysql,用 ...
- python3与mysql交互:pymysql
python3与mysql交互 1.安装pymysql模块 pip3 install pymysql3 2.pymysql的简单使用: # /usr/bin/env python3 import py ...
- 第一节、Alex 讲解 python+mysql 交互;
Python Mysql 交互 A.Alex 的语法展示: import MySQLdb try: conn=MySQL.connect(host='localhost',user='ro ...
- Python与Mysql交互
#转载请联系 在写内容之前,先放一张图,bling- 这张图算是比较详细的表达出了web开发都需要什么.用户访问网页,就是访问服务器的网页文件.这些网页文件由前端工程师编写的.服务器通常用nginx/ ...
- 【04】【转】Nodejs学习笔记(四)--- 与MySQL交互(felixge/node-mysql)
目录 简介和安装 测试MySQL 认识一下Connection Options MYSQL CURD 插入 更新 查询 删除 Nodejs 调用带out参数的存储过程,并得到out参数返回值 结束数据 ...
随机推荐
- c语言_常见图片格式判断
c语言_常见图片格式判断 我想尽各种思路.今天,终于把图片判断搞定了. 在此,我写一下我的思路.希望对那些不想看代码的朋友们有帮助. 常风的的图片格式有:bmp,png,jpg,gif等图片格式. 我 ...
- linux之SQL语句简明教程---INSERT INTO
到目前为止,我们学到了将如何把资料由表格中取出.但是这些资料是如果进入这些表格的呢? 这就是这一页 (INSERT INTO) 和下一页 (UPDATE) 要讨论的. 基本上,我们有两种作法可以将资料 ...
- system函数遇到的问题 - 程序死掉
system函数遇到的问题 解决方案见最下边 http://blog.csdn.net/yangzhenzhen/article/details/51505176 这几天调程序(嵌入式linux),发 ...
- 灵活使用getconf命令来获取系统信息
http://blog.chinaunix.net/uid-23105261-id-109513.html 灵活使用getconf命令来获取系统信息 我们时常需要查询系统相关的信息,比如页面大小,整数 ...
- javascript第十六课:动态注册事件
直接给dom元素添加动态事件,如: document.getelementbyid('#id').onclick=function(){ 方法体! };
- Longge的问题(欧拉,思维)
Longge的问题 Submit Status Practice HYSBZ 2705 Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一 ...
- pomelo初探
最近发现了一个比较好玩的东西pomelo.地址:点击打开链接 这个东西是网易开发的一套基于node.js的高性能,分布式游戏服务器框架.这套框架不仅可以用来开发游戏服务器,也可用于开发高实时web应用 ...
- poj 3026 (最小生成树)
题意:起点开始有超过100个人,总共不会超过100个外星人,问把所有的外星人都搜出来花的最小时间.一条路径上的时间跟人数是无关的,只跟路径长度有关. 思路:刚开始人都在起点,当派一定人数去最近的外星人 ...
- 卸载mysql残留
一.在控制面板中查看是否有mysql,有则进行卸载.或执行同样版本号的mysql安装文件,选择"remove"进行卸载. 二.卸载mysql后其服务仍在,解决的方法: 点击&quo ...
- js 将网页内容生成图片
$(function () { $("#saveimg_btn").on("click",function (event) { event.preventDef ...