1. 首页 >> 随笔 >> 个人原创

PHP连接MYSQL数据库

1.2 连接数据库

通过PHP做MySQL的客户端

1.2.1 开启mysqli扩展

在php.ini中开启mysqli扩展

extension=php_mysqli.dll

开启扩展后重启服务器,就可以使用mysqli_函数了,

1.2.2 连接数据库

mysqli_connect(主机IP,用户名,密码,数据库名,端口号) //如果端口号是3306可以省略
mysqli_connect_error():获取连接数据库的错误信息
mysqli_connect_errno():获取连接数据库的错误编码
mysqli_set_charset(连接对象,字符编码)   

面向对象风格

<?php
$mysqli = new mysqli ( 'localhost', 'my_user', 'my_password', 'my_db'); 
/* 
 * This is the "official" OO way to do it, 
 * BUT $connect_error was broken until PHP 5.2.9 and 5.3.0. 
 */ 
if ( $mysqli -> connect_error ) { 
    die('Connect Error('.$mysqli -> connect_errno.')' 
            .$mysqli -> connect_error); 
} 
/* 
 * Use this instead of $connect_error if you need to ensure 
 * compatibility with PHP versions prior to 5.2.9 and 5.3.0. 
 */ 
if ( mysqli_connect_error()) { 
   die( 'Connect Error ('.mysqli_connect_errno().')' 
      .mysqli_connect_error()); 
} 
echo 'Success... '.$mysqli -> host_info."\n" ; 
$mysqli -> close(); 
?>

面向对象风格 when extending mysqli class

<?php
class foo_mysqli extends mysqli {  
    public function __construct ( $host, $user, $pass, $db ) {  
         parent :: __construct ( $host, $user, $pass, $db );  
  
        if ( mysqli_connect_error()) {  
            die( 'Connect Error ('.mysqli_connect_errno().') ' 
                    .mysqli_connect_error()); 
        }  
    }  
}
$db = new foo_mysqli ( 'localhost', 'my_user', 'my_password', 'my_db' ); 
echo 'Success... '.$db -> host_info."\n" ; 
$db -> close(); 
?>

过程化风格

<?php
$conn = mysqli_connect ( 'localhost', 'my_user', 'my_password', 'my_db' );  //连接数据库
if (!$conn ) {  
    die('Connect Error('.mysqli_connect_errno().')'.mysqli_connect_error()); 
}
echo 'Success...'.mysqli_get_host_info($conn)."\n" ; 
mysqli_close ( $conn );  //关闭数据库连接
?>

1.2.3 读写数据库

创建news数据库

<?php
// 连接数据库
$conn = mysqli_connect("localhost","peter","abc123");
// 检测连接
if (!$conn) {
    die("连接失败: ".mysqli_connect_error());
}
mysql_select_db("my_db", $conn);    //选择数据库 
// 使用 sql 创建数据表
$sql = "CREATE TABLE Persons (
  id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
  FirstName VARCHAR(30) NOT NULL,
  LastName VARCHAR(30) NOT NULL,
  Age VARCHAR(50) NOT NULL,
  addtime int NOT NULL,  // '添加时间'
reg_date TIMESTAMP
)";

if (mysqli_query($conn, $sql)) {
    echo "数据表 Persons 创建成功";
} else {
    echo "创建数据表错误: " . mysqli_error($conn);
}
 
mysqli_close($conn);
?>

思考:addtime时间字段可以用datetime类型,也可以使用int类型。一般用int,因为datetime占用8个字节,int占用4个字节。

执行SQL语句 使用 mysql_query() 函数。此函数用于向 MySQL 连接发送查询或命令 例子 在下面的例子中,我们创建了一个名为 "my_db" 的数据库:

<?php
$conn = mysqli_connect("localhost","peter","abc123");
if (!$conn)
  {
  die('Could not connect: '.mysql_error());
  }
if (mysql_query("CREATE DATABASE my_db",$con))
  {
  echo "Database created";
  }
else
  {
  echo "Error creating database: ".mysql_error();
  }
mysqli_close($conn);
?>

向数据库表插入数据

<?php
$conn = mysql_connect("localhost","peter","abc123");
if (!$conn)
  {
  die('Could not connect: '.mysql_error());
  }
mysql_select_db("my_db", $conn);    //选择数据库
mysql_query("INSERT INTO Persons (FirstName, LastName, Age) VALUES ('Peter', 'Griffin', '35')");
mysql_query("INSERT INTO Persons (FirstName, LastName, Age) VALUES ('Glenn', 'Quagmire', '33')");
mysqli_close($conn);
?>

把来自表单的数据插入数据库
现在,我们创建一个 HTML 表单,这个表单可把新记录插入 "Persons" 表。
这是这个 HTML 表单:

<html>
<body>
   <form action="insert.php" method="post">
     Firstname: <input type="text" name="firstname" />
     Lastname: <input type="text" name="lastname" />
     Age: <input type="text" name="age" />
     <input type="submit" />
   </form>
</body>
</html>

当用户点击上例中 HTML 表单中的提交按钮时,表单数据被发送到 "insert.php"。"insert.php" 文件连接数据库,并通过 $_POST 变量从表单取回值。然后,mysql_query() 函数执行 INSERT INTO 语句,一条新的记录会添加到数据库表中。 下面是 "insert.php" 页面的代码:

<?php
$conn = mysqli_connect("localhost","peter","abc123");
if (!$conn)
  {
  die('Could not connect: '.mysql_error());
  }
mysql_select_db("my_db", $conn); //选择数据库
$sql="INSERT INTO Persons (FirstName, LastName, Age) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";
if (!mysql_query($sql,$conn))
  {
  die('Error: '.mysql_error());
  }
echo "1 record added";
mysqli_close($conn)
?>

声明:本站部分文章,来源于互联网收集分享。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
转载本文注明出处:http://www.suuxx.com/blog/a/9DB51DD9D683E03A.html

留言评论

{"error":401,"message":"site error"}