[洗沟数据]Mysql连接示例,PHP5 连接数据库PDO简单使用,及常规mysql_connect传统链接Mysql的方法。

jackxiang 2008-7-31 09:56 | |
如果有端口:
$dsn="mysql:host=".$this->db_host.";port=".$this->db_port.";dbname=".$this->db_name;

<?php
  $dsn = "mysql:host=localhost;dbname=DB_***2010_11";
  $db = new PDO($dsn, 'root', '*****');
  $db->query('set names utf8;'); //你可能会用到的utf-8,哈哈
  $rs = $db->query("SELECT * FROM Tbl_User_***");
  $result_arr = $rs->fetchAll();
  print_r($result_arr);
?>


常规传统链接方法:

<?php
    $mysql_server_name="10.44.202.1*7";
    $mysql_username="username";
    $mysql_password="PWD";
    $mysql_database="database_mysql";
    $conn=mysql_connect($mysql_server_name, $mysql_username,
                        $mysql_password);
    $strsql="select * from user";
    $result=mysql_db_query($mysql_database, $strsql, $conn);
    while($row=mysql_fetch_row($result)){//一定要循环,指针下移。
         print_r($row);
    }
?>

mysql_fetch_row()与mysql_fetch_array()的区别:
两个函数,返回的都是一个数组,区别就是第一个函数返回的数组是只包含值,我们只能$row[0],
$row[1],这样以数组下标来读取数据,而mysql_fetch_array()返回的数组既包含第一种,也包含键值
对的形式,我们可以这样读取数据,(假如数据库的字段是 username,passwd):
$row['username'], $row['passwd']
而且,如果用($row as $kay => $value)来操作的话,还以直接取得数据库的字段名称。
更主要的是mysqli是php5提供的新函数库,(i)表示改进,其执行速度更快.MysqlLi类库:


DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
  `ID` smallint(8) NOT NULL,
  `Name` varchar(12) DEFAULT NULL,
  `Detail` text,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of userinfo
-- ----------------------------
INSERT INTO `userinfo` VALUES ('1', 'xiangdong', 'ackxiang');
INSERT INTO `userinfo` VALUES ('2', 'jiaxuan', 'k3s');


对比来自:http://www.jb51.net/article/37909.htm

<?php
  $dsn = "mysql:host=localhost;dbname=test_php_work";
  $db = new PDO($dsn, 'root', '');
  //$db->query('set names utf8;'); //你可能会用到的utf-8,哈哈
  //插入
  /*
  $count = $db->exec("insert into union_index set Tid='1234565788',Uid='666',Status='1'");
  echo $count;
  */
  //显示
  /*
  $rs = $db->query("SELECT * FROM union_index");
  $result_arr = $rs->fetchAll();
  print_r($result_arr);
  */
  //显示2
  
  $rs = $db->prepare("SELECT * FROM union_index");
  $rs->execute();
  while($row = $rs->fetch())
  {
    echo $row[Tid]."&nbsp;".$row[Uid]."&nbsp;".$row[Status]."<br>";
    //print_r($row);
  }
  
  //获取指定记录里一个字段
  /*
  $rs = $db->query("SELECT COUNT(*) FROM union_index");
  $col = $rs->fetchColumn();
  echo $col;
  */

?>


<?php
   error_reporting(E_ALL);
  $dsn = "mysql:host=localhost;dbname=test";
  $db = new PDO($dsn, 'root', '');  
  //$db->query('set names utf8;');
  $sql = "INSERT INTO `test`.`mytest` (`id` ,`uid` ,`rstatus` ,`content`) VALUES ('121', '2', '2', '我得天啊,乱码!')";
  $rs = $db->prepare($sql);
  $isrue = $rs->execute();
  //$db->query('set names utf8;');
  $sql = "select * from mytest";
  $rs = $db->prepare($sql);
  $rs->execute();
  while($row = $rs->fetch())
  {
    echo $row['uid']."&nbsp;".$row['rstatus']."&nbsp;".$row['content']."<br>";
    //print_r($row);
  }
?>


以上代码没有问题,但是查看mysql pdo中有如下问题:
当我使用PDO_MYSQL连上mysql以后,可以利用这个参数自动执行一些QUERY。最常见的使用场合是连接mysql使用utf-8字符集
      $db = new PDO("mysql:dbname=dbname", "user", "password",array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));

以上代码会在连上mysql之后马上执行sql::

set names 'utf-8';


show variables like "character_set%";
用来查看编码,不能动不动就搞set names 'utf8'!
字符集详情:http://dev.mysql.com/doc/refman/5.1/zh/charset.html





参考:
http://www.phpv.net/html/1579.html
http://www.phpchina.com/html/200611/n2844.html
http://www.diybl.com/course/4_webprogram/php/phpshil/200725/9799.html

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/1177/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2022-4-15 18:01
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]