上一篇
场景引入:
凌晨3点,你盯着屏幕上的用户注册表单发呆——明明代码写好了,怎么数据就是存不进数据库?别慌!今天我们就用最直白的方式,手把手教你用PHP和MySQL实现"数据入库自由"!✨
基础环境
确保已安装
# 检查PHP扩展(新版PHP默认已集成mysqli) php -m | grep mysqli
<?php $servername = "localhost"; $username = "root"; $password = "your2025Password"; $dbname = "shop_db"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } echo "🎉 数据库连接成功!"; ?>
// 插入数据示例 $sql = "INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com')"; if ($conn->query($sql) === TRUE) { echo "👏 新记录插入成功!"; } else { echo "❌ 错误: " . $sql . "<br>" . $conn->error; }
$result = $conn->query("SELECT id, name FROM users"); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "ID: " . $row["id"]. " - 姓名: " . $row["name"]. "<br>"; } } else { echo "0 结果"; }
$conn->close(); // 养成好习惯!
try { $pdo = new PDO( "mysql:host=localhost;dbname=shop_db", "root", "your2025Password", [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION] ); echo "🔐 PDO连接成功!"; } catch(PDOException $e) { die("连接失败: " . $e->getMessage()); }
$stmt = $pdo->prepare("INSERT INTO products (name, price) VALUES (:name, :price)"); $stmt->execute([ ':name' => 'iPhone 18', ':price' => 9999 ]); echo "🛒 添加了".$stmt->rowCount()."条商品数据";
try { $pdo->beginTransaction(); // 转账操作示例 $pdo->exec("UPDATE accounts SET balance = balance - 500 WHERE user_id = 1"); $pdo->exec("UPDATE accounts SET balance = balance + 500 WHERE user_id = 2"); $pdo->commit(); echo "💸 转账成功!"; } catch(Exception $e) { $pdo->rollBack(); echo "转账失败: ".$e->getMessage(); }
密码安全
// 永远不要这样! $password = $_POST['password']; // 应该这样(PHP 8.3+) $hashed_pw = password_hash($_POST['password'], PASSWORD_DEFAULT);
错误处理
// 开发环境显示错误 ini_set('display_errors', 1); error_reporting(E_ALL); // 生产环境记录日志 ini_set('log_errors', 1); ini_set('error_log', '/var/log/php_errors.log');
连接池优化
// 使用持久连接(高并发场景) $dbh = new PDO( 'mysql:host=localhost;dbname=test', 'user', 'pass', [PDO::ATTR_PERSISTENT => true] );
Q:为什么我的中文数据变成乱码?
A:建立连接后立即设置字符集:
$conn->set_charset("utf8mb4"); // MySQLi // 或PDO连接DSN添加: "mysql:host=localhost;dbname=test;charset=utf8mb4"
Q:2025年还用学习MySQLi吗?
虽然PDO是趋势,但仍有60%遗留项目使用MySQLi(2025年统计),两者都要掌握!
从最基础的MySQLi连接到PDO的预处理语句,再到事务处理,PHP操作MySQL就像🗝️钥匙和锁的关系。
现在就去试试把你的数据存入MySQL吧!遇到问题?评论区见~ 👇
本文由 向弘大 于2025-08-02发表在【云服务器提供商】,文中图片由(向弘大)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/512619.html
发表评论