PHP与MySQL学习与实践— —新闻系统前后端

来源:互联网 发布:斗米兼职 知乎 编辑:程序博客网 时间:2024/06/07 02:22

(1)、PHP+MYSQL入门学习并实现后端增删改查,bootstrap实现后端页面
(2)、前端有ajax请求json格式数据,jquery动态创建元素等


            PHP与MySQL关系图

一、基本命令行

  1、连接数据库:mysql_connect(“数据库主机名或ip”,”用户名”, “密码”),连接成功的话返回mysql连接标识符
  2、关闭指定连接的数据库连接:mysql_close(标识符);
  这里写图片描述
   下面实际操作数据库的效果可以在浏览器phpMyAdmin视图对话中看到
  3、选择访问数据库:mysql_select_db(‘数据库名字’);
  4、执行sql语句:mysql_query(“xxxx”) ;
    如:向test数据库的testsdb表的name字段插入一个值的命令行:mysql_query(‘insert into testdb(name) values(“tom”)’)。当插入失败时仅显示失败结果并没失败的原因输出,需借助:mysql_error();//显示mysql的错误,不需要参数;
    a、执行查询语句:

$res = mysql_query('select * from tablename limit 1');\\limit 1表示查询一行,返回一个资源句柄(resource)$row = mysql_fetch_array($res);\\通过句柄获查询结果集中的数据var_dump($row);\\打印

    b、插入新数据到MySQL中

$sql = "insert into tablename(name, age) values('李四', 18)";mysql_query($sql); //执行插入语句
二、4f 内置函数(一)

  1、mysql_fetch_row() ;//以索引数组形式获取数据

//只能用echo $row[0] . "," . $row[1]...

  2、mysql_fetch_array() ;//以混合数组形式获取数据

$sql = "select * from phptable";mysql_query("set names 'utf8'");//设置编码,解决乱码问题$result = mysql_query($sql, $con);//获取资源标识符while($row = mysql_fetch_array($result)) {//以数组形式返回每一行    echo $row['id'] . "," . $row['name'];//或者用echo $row[0] . "," . $row[1];    print_r($row);}

  mysql_fetch_row和mysql_fetch_array的区别
    a、mysql_fetch_row取一条数据产生一条索引数组
    b、mysql_fetch_array默认状态下取一条数据产生一个索引数组和一个关联数组
      mysql_fetch_array的第二个参数
        1.MYSQL_ASSOC 关联数组
        2.MYSQL_NUM 数字数组(索引数组)
        3.MYSQL_BOTH 默认
        

  3、mysql_fetch_assoc() ;//以关联数组形式获取数据

mysql_fetch_assoc($resouce)mysql_fetch_array($resouce,MYSQL_ASSOC)等价,可能mysql_fetch_assoc()占用的资源更少一些。

  4、mysql_fetch_object();//以对象形式获取数据。输出结果是一个对象

while($obj = mysql_fetch_object($result)) {    echo $obj->name;    //echo 输出内容,print_r()打印数组,var_dump打印对象    var_dump($obj);}
三、内置函数(二)

  1、mysql_num_rows()为获取结果集的行数:

$query = mysql_query($sql);//用法二:用来判断数据集是否为空。意思:当存在$query,并且存在$query存在行的时候执行。if($query && mysql_num_rows($query)){     while($row=mysql_fetch_row($query)) {        print_r($row);//进行数据的输出    }} else {    echo "没有数据";}//否则输出“没有数据”。可以避免资源的浪费(明明为空却还输出,资源就浪费了)

  2、mysql_result

mysql_result($result, $row, [$field]);$result为查询的返回结果集,即资源标示符;$row为行索引,从0开始;$field为字段(属性索引),可选,比如'id'或者是'name'之类的,也可以是偏移量,就是从左到右的字段排序,也是从0开始。

  3、mysql_affected_rows($con); //传入连接标识符,返回最近操作影响的行数。注意一下问题:
    a、如果本次mysql语句未对数据库进行修改,则返回为0.
    b、该函数只能检测离其最近的一条mysql语句对数据库的修改,其他的修改则无法判别。

四、前后端实践

  1、后端:php+mysql实现增删改查,bootstrap实现页面

  2、前端:ajax请求json格式数据,jquery动态创建元素等

代码下载地址:http://download.csdn.net/detail/mqy1023/9509256

其他:遇到的问题

  1、#1089无法创建table表格的问题
    
  解决方案a:cmd命令行手动将PRIMARY KEY (‘id’(4))的(4)删除,回车手动创建成功。
  参考:http://stackoverflow.com/questions/28932281/what-is-wrong-with-my-sql-here-1089-incorrect-prefix-key
  解决方案b:在创建表格填写主键时,大小不要填写
    

  2、乱码问题
    解决步骤1、创建数据库时排序规则选utf8_general_ci 2、php中执行sql语句前加mysql_query(“set names ‘utf8’”);//设置UTF-8编码
    
  3、解决json_encode输出中文出现UNICODE
    把汉字先urlencode然后再使用json_encode,json_encode之后再次使用urldecode来解码,这样编码出来的json数组中的汉字就不会出现unicode编码了。

$array = array('test'=>urlencode("我是测试"));$array = json_encode($array);echo urldecode($array);


参考:
1、慕课网《PHP与MYSQL关系大揭秘》:http://www.imooc.com/learn/116
2、慕课网《JSON应用场景与实战》:http://www.imooc.com/learn/68

1 0
原创粉丝点击