您的位置:首页 > 编程语言 > PHP开发

PHP连接数据库基础知识及易错点

2017-09-14 11:40 549 查看
//会不定时更新…

emmmmm,想用PHP写计网的课设,所以滚去看了下PHP连接数据库…

以下操作都是在Ubuntu17.04,LAMP下进行,且PHP数据库的扩展包为MySqli,MySqli为MySql的加强版,在使用上稍有区别,比较容易混淆,要注意

下面是PHP连接数据库的一些最最最基本的操作额,分界线两边的代码要分开操作

一些细节问题:

mysqli_connect()的第一个参数就是本机的地址,写localhost或127.0.0.1都可以,别写成当前代码的地址了(自己当时就这么干了,很蠢诶

数据库的用户名一般是root,如果密码没被修改,也是root,否则就是修改之后的,要是忘了密码又修改过,只能自行百度了

mysqli_connect()的返回值不能输出,输出会导致后面的程序难以进行

用mysqli_query()建数据库建表的时候,如果数据库或者表已经建了一次就不会再建第二次了

<?php

//我配置的是mysqli库

//用mysqli_connect()连接数据库
@$link = mysqli_connect('127.0.0.1','root','Vmorish');
if( $link){
echo 'PHP连接数据库成功!'.'<br>';
}else{
echo 'PHP连接数据库失败'.'<br>';
}

//------------------------------------分界线------------------------------

//用mysqli_select_db()指定要操作的数据库
//在这之前需要连接数据库,我们就用上面的
//句柄要作为第一个参数
@$ok = mysqli_select_db($link,"phpdb");
// echo $ok.'<br>';
if( $ok){
echo '数据库选择成功'.'<br>';
}else{
echo '数据库选择失败'.'<br>';
}
mysqli_close($link);

//------------------------------------分界线------------------------------

// 用mysqli_query()函数操作数据库
// 在MySql中创建一个数据库newdata,并在这个数据库中创建一个表testtable,表的字段可以随意设置
$id = mysqli_connect('127.0.0.1','root','Vmorish');
mysqli_query($id,'CREATE DATABASE newdata');
mysqli_select_db($id,'newdata');
$sql = "CREATE TABLE hhh(name varchar(10), age int(4))";
if( mysqli_query($id,$sql)){
echo '表创建成功'.'<br>';
}else{
echo '表创建失败'.'<br>';
}
mysqli_close($id);

//------------------------------------分界线------------------------------

//用mysqli_query()向表中插入数据
$link = mysqli_connect('127.0.0.1','root','Vmorish');
mysqli_select_db($link,'phpdb');
$sql = "CREATE TABLE mess(name varchar(10), age int(4))";
mysqli_query($link,$sql);
mysqli_query('SET CHARACTER gb2312');
for( $i = 1; $i < 6; $i++){
$n1 = $i+20;
$xm = 'name'.$i;
$sql = "INSERT INTO mess VALUES('".$xm."',".$n1.")";
$excu = mysqli_query($link,$sql);
if( $excu){
echo '第'.$i.'条数据插入成功!'.'<br>';
}else{
echo '数据插入失败'.'<br>';
}
}
mysqli_close($link);

//------------------------------------分界线------------------------------

//用PHP从表中读取数据
$link = mysqli_connect('127.0.0.1','root','Vmorish');
mysqli_select_db($link,'phpdb');
mysqli_query('SET CHARACTER SET gb2312');
$query = 'SELECT * FROM mess';
$result = mysqli_query($link,$query);
// var_dump($result);
echo "<table border=1 width=200><tr><td>姓名</td><td>年龄</td></tr>";
$datanum = mysqli_num_rows($result);
echo "表mess中共有".$datanum."条数据<br>";
for( $i = 1; $i <= $datanum; $i++){
//本来写的是$info = mysqli_fetch_array($result,MySQLI_ASSOC);,没有结果
$info = mysqli_fetch_array($result);
//  var_dump($info);
echo "<tr><td>".$info['name']."</td>";
echo "<td>".$info['age']."</td></tr>";
}
echo "</table>";
mysqli_close($link);

?>


用上面的知识来实现分页功能:

tml>
<head>
<title>实现数据的分页</title>
</head>

<body>
<?php
$link = mysqli_connect("127.0.0.1","root","Vmorish");
$choose = mysqli_select_db($link,"phpdb");//连接PHP和数据库
$query = "SELECT * FROM student";//查询语句
$result = mysqli_query($link,$query);//返回结果集
$totalnum = mysqli_num_rows($result);//结果集中存在多少行数据
$pagesize = 15;//设置每页显示15条
//用GET方法在URL中传递参数,if语句判断是否传递了这个参数,如果传递了,说明用户选择了某一页,如果参数为空或者未传递,说明本页面可以直接被打开,显示第一页
$page = $_GET["page"];
// var_dump($page);
if( $page == ""){
$page = 1;
}
$begin = ($page-1)*$pagesize;//计算每页的第一条是表里的第多少条
$totalpage = ceil($totalnum/$pagesize);//向上取整,看最多要用多少页去显示所有数据
echo "<table border=1 width=500><tr><td>学号</td><td>姓名</td><td>专业</td><td>年龄</td></tr>";
$datanum = mysqli_num_rows($result);
echo "表student中共有".$totalnum."条数据<br>";
echo "每页显示".$pagesize."条,共".$totalpage."页<br>";
for( $i = 1; $i <= $totalpage; $i++){
echo "<a href=paging.php?page=".$i."><font color=black>[".$i."] </a>";
}

$query = "SELECT * FROM student limit $begin,$pagesize";//选择表里从$begin条开始,$pagesize条
$result = mysqli_query($link,$query);
$datanum = mysqli_num_rows($result);
for( $i = 1; $i <= $datanum; $i++){
$info = mysqli_fetch_array($result);
echo "<tr><td>".$info['id']."</td>";
echo "<td>".$info['name']."</td>";
echo "<td>".$info['major']."</td>";
echo "<td>".$info['age']."</td></tr>";
}
echo "</table>";

mysqli_close();
?>
</body>

</html>


转载请注明出处:http://blog.csdn.net/cherish0222/article/details/77978378
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: