• 认真地记录技术中遇到的坑!
  • 能摸鱼真是太好啦!嘿嘿嘿!

PHP使用MySQL

mysql 悠悠 8年前 (2017-08-03) 2664次浏览 0个评论

准备工作

PHP 5 及以上版本建议使用以下方式连接 MySQL :

  • MySQLi extension (“i” 意为 improved)
  • PDO (PHP Data Objects)

PDO 应用在 12 种不同数据库中, MySQLi 只针对 MySQL 数据库。

所以,如果你的项目需要在多种数据库中切换,建议使用 PDO ,这样你只需要修改连接字符串和部分查询语句即可。 使用 MySQLi, 如果不同数据库,你需要重新编写所有代码,包括查询。

可以使用 phpinfo() 查看是否安装 MySQLi 扩展和 PDO,pdo_mysql,必须安装相应的扩展才能使用。

连接 MySQL

<?php
servername = "localhost";username = "username";
password = "password";connection = new mysqli(servername,username, password); // 创建连接实例

if (connection->connect_error) {   // 检测连接
// PHP 5.2.9以前的版本使用 mysqli_connect_error() 函数判断
    die("连接失败: " . connection->connect_error);
} 
echo "连接成功";connection->close();  // 关闭连接

// PDO连接
try {
    connection= new PDO("mysql:host=servername;dbname=myDB", username,password);
    echo "连接成功"; 
}
catch(PDOException e)
{
    echoe->getMessage();
}
$connection = null; // 关闭连接

数据库操作

使用连接实例 $connection 的 query 方法,可以执行任意的合法 SQL 语句,通过比较返回值是否为 true 判断 SQL 语句执行是否成功。

<?php
servername = "localhost";username = "username";
password = "password";dbname = "test";

// 创建连接
conn = new mysqli(servername, username,password, dbname);
// 检测连接
if (conn->connect_error) {
    die("连接失败: " . conn->connect_error);
} 

// 使用 sql 创建数据表sql = "CREATE TABLE Users (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)";
if (conn->query(sql) === TRUE) {
    echo "Table MyGuests created successfully";
} else {
    echo "创建数据表错误: " . conn->error;
}

// 数据插入sql = "INSERT INTO Users (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
if (conn->query(sql) === TRUE) {
    echo "新记录插入成功";
} else {
    echo "Error: " . sql . "<br>" .conn->error;
}

// 数据查询
sql = "SELECT id, firstname, lastname FROM Users";result = conn->query(sql);
if (result->num_rows>0) {
    while(row = result->fetch_assoc()) {  // 遍历输出数据
        echo "id: " .row["id"]. " - firstname: " . row["firstname"]. " " . "<br>";
    }
} else {
    echo "0 结果";
}conn->close();

// 还可以使用下面的方法连接数据库进行查询
con=mysqli_connect(servername, username,password, dbname);
if (mysqli_connect_errno())   // 检测连接
{
    echo "连接失败: " . mysqli_connect_error();
}result = mysqli_query(con,"SELECT * FROM Users
WHERE firstname='Wang'");
while(row = mysqli_fetch_array(result))
{
    echorow['firstname'] . " " . $row['lastname'];
    echo "<br>";
}
?>

注意事项

对于低版本的PHP,如PHP5.4,通过mysql默认是不能获取数据模型的,也就是说查询的所有字段全为string,即使数据库中保存的是int类型。

使用mysqlndmysqli可以获取数据模型,但是需要手动设置。

$connection = mysqli_connect(host, username, password , database);
mysqli_options($connection, MYSQLI_OPT_INT_AND_FLOAT_NATIVE, true);

转载请注明出处 PHP使用MySQL
喜欢 (1)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址