1:mysql是什么?
答:mysql是一种开源的,小型的数据库
和PHP结合的非常紧密

比较流行的LAMP组合 指 linux apache mysql php


2:我怎么样用Mysql?
答:下载mysql并安装,
装完之后,你的机器上,就有一个mysql程序始终在运行,
这个程序可以放置你的数据。


3:PHP和mysql是什么关系?
答:php是php,mysql是mysql
但是,php可以接到上mysql,
并且操作mysql

4: 连接上mysql很容易,
但连接上mysql之后,操作mysql,存、取,删,改数据
mysql增删改查数据又有mysql自身的语法。

即:连上mysql容易,但连上后
你要会基本的增删改查 sql语句

5:我对mysql比较生怎么办?
答:百度“燕十八 mysql”,下载41集教程,恶补。


在讲完小项目之后,会考虑系统的讲解mysql。

6:我安装Mysql都不太会呢?
答:老师演示一遍。
你可以自己装,也可以装集成包,比如wamp

(因为apache+php+mysql的配置挺麻烦,新手建议先装个集成包,等PHP入门后,再琢磨单独安装的方法)

 

7:在命令行下,连接上mysql,
这个黑窗口只是一个客户端。
就像QQ与腾迅服务器的关系。


8:服务器就在那里,不远不近,不来不去。
客户端去连服务器,要满足服务器的连接规范。

反过来讲:能满足服务器的连接规范,进行连接,就可以称之为客户端。

9:问:客户端只有一种吗?
比如 mysql.exe黑窗口,是mysql软件自带的客户端,
还有navcat,mysqlfront,等等

就像apache是服务器,浏览器就是客户端,而浏览器多种多样
有chrome,firefox,IE,....

10:我们接下来要用php去连接mysql
自然php也充当了客户端的角色。

mysql_connect('localhost','root','111111',true);

最后一个参数true"是否重连的意思"。

$sql = 'use test';
// 发送sql,进行查询
$rs = mysql_query($sql,$conn); // 沿着conn通道进行查询

$sql = 'set names utf8';
mysql_query($sql,$conn);

$sql = "insert into stu values ($id,'$sname','$sname')";
$rs = mysql_query($sql,$conn);

print_r(mysql_fetch_assoc($rs));
/*
mysql_fetch_assoc取出的是 关联数组
而且:
键-->表的字段名
值-->字段的值
Array
(
    [id] => 16
    [sname] => acnwhu
    [yy] => acnwhu
)
*/

print_r(mysql_fetch_row($rs));
/*
mysql_fetch_row 取出的结果是一个 索引数组
而且:
字符从左到右,索引依次是0,1,2...N
Array
(
    [0] => 5
    [1] => stu5'
    [2] => yy333333
)
*/


print_r(mysql_fetch_array($rs));
/*
mysql_fetch_array 取出的结果 既有数字索引,也有字段索引
是 前2者结果的 并集
Array
(
    [0] => 46
    [id] => 46
    [1] => rxyzqu
    [sname] => rxyzqu
    [2] => rxyzqu
    [yy] => rxyzqu
)
*/

 

print_r($obj = mysql_fetch_object($rs));
/*
mysql_fetch_object 返回的是对象
stdClass Object
(
    [id] => 33
    [sname] => stu3333
    [yy] => yy333333
)

 

/*
PHP 操作 mysql的其他几个常用函数
*/

$conn = mysql_connect('localhost','root','111111');
if(!$conn) {
    echo '连接数据库失败';
    exit;
}


// 选库
$sql = 'use test';
mysql_query($sql,$conn);

$id = isset($_GET['id']) ? $_GET['id'] + 0 :0;


// 接收id后,我准备删除数据
$sql = 'delete from stu where id=' . $id;

$rs = mysql_query($sql,$conn);

if($rs) {
    echo '删掉了一行数据<br />';
} else {
    echo '删数据失败<br />';
}


/*
严重注意:
对于增/删/改 来说,返回值 都是true/false2种情况

其中:insert,返回true,数据肯定是插入成功了.

对于update/delete ,即修改/删除来说
返回为真,代表:这个sql的语法没有问题,执行成功了.
是从语法角度/执行角度来说的.

但是,未必这个语句能影响到数据,比如你的条件不对.

就好比说: 通知书童,把昨天的垃圾扔了,书童年去扔,但发现昨天就已扔了.

返回的true ,是指你通知书童,书童也答应你去干活了.
但是:没有垃圾要扔.


所以,要想真正判断有没有删/改数据,得以实际影响的行数为准
那么,在执行delete/update后,如果获取受影响行数?
答:用函数 mysql_affected_rows
*/

/*
mysql_affected_rows : 在执行delete/update后立即调用此函数,
可得到delete/update语句影响的行数.
*/


$cnt = mysql_affected_rows($conn);
if($cnt) {
    echo '删掉了',$cnt,'行数据';
} else {
    echo '没有数据被删掉';
}

 

// 继承来看,还剩下多少条数据
echo '<br />';


$sql = 'select * from stu';
$rs = mysql_query($sql,$conn);

/**
// 这是笨办法,循环一遍
// 有现在函数可以用
$num = 0;
while(mysql_fetch_assoc($rs)) {
    $num++;
}
**/


/*
mysql_num_rows , 返回 select 语句的结果行数
在运行select 之后,立即调用mysql_num_rows 可以得到这次select的行数
*/

$num = mysql_num_rows($rs);
echo '还剩下',$num,'条数据';

 

$conn = mysql_connect('localhost','root','111111');

$db = 'test';
$sql =  'use'.$db;
echo $sql;

mysql_query($sql,$conn);

$sql = 'delete from stu where id=5';
if(mysql_query($sql,$conn)) {
    echo '删除成功';
} else { // 查询失败,就把错误信息打出来
    echo '删除失败';
    echo '原因:',mysql_errno(),'~',mysql_error();
}

 

在完成操作数据库连接后进行完相关操作,请注意及时关闭连接。

mysql_close($conn);