您现在的位置是:百科 >>正文

php连接mysql数据库代码

百科7231人已围观

简介 PHP连MySQL,说白了就三步:建连接、查数据、关连接。但新手常在这第一步就卡住——旧教程让你用mysql_connect,新教程让你用PDO,中间还夹着个mysqli,选哪个?我的建议是:别纠结 ...

PHP连MySQL,数据说白了就三步:建连接、库代查数据、数据关连接。库代但新手常在这第一步就卡住——旧教程让你用mysql_connect,数据新教程让你用PDO,库代中间还夹着个mysqli,数据选哪个?库代我的建议是:别纠结,直接上PDO。数据理由后面说。库代

先看最基础的数据写法。假设你本地装了XAMPP,库代MySQL账号root,数据密码空着,库代数据库名叫test_db。数据代码长这样:

<?php $dsn = 'mysql:host=localhost;dbname=test_db;charset=utf8'; $user = 'root'; $pass = ''; try {  $pdo = new PDO($dsn, $user, $pass); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo '连上了,兄弟。'; } catch (PDOException $e) {  die('连接炸了:' . $e->getMessage()); } ?>

注意那个charset=utf8,很多人漏掉这个,结果中文全变问号。这不是玄学,是编码没对齐。MySQL默认的utf8其实不是真正的UTF-8,只支持到三个字节的字符,emoji那种四个字节的会报错。要真支持,得写成utf8mb4。我一般直接用utf8mb4,省得以后换。

连接成功后,查询才是重头戏。用PDO的好处是预处理语句贼方便,防SQL注入是顺手的事。看这个例子:

$stmt = $pdo->prepare('SELECT * FROM users WHERE email = ?'); $stmt->execute([$_POST['email']]); $user = $stmt->fetch(PDO::FETCH_ASSOC);

问号占位符,execute传数组,干净利落。你手动拼字符串试试?上次我见一同事把用户输入直接怼进SQL,结果删库跑路,第二天就被开了。别学他。

插入数据也类似,但有个细节容易踩坑。用lastInsertId()拿自增主键时,必须在同一连接里调用,中间不能断。还有,事务处理——比如转账操作,得用beginTransaction()包起来。别嫌麻烦,真出问题了回滚一下,比哭都强。

关连接?其实不用管。PHP脚本跑完,连接自动断。但长驻进程(比如用Swoole)就得手动置null。普通网页开发,你写不写都行,写了反而显得专业。

最后说点实在的。你可能会遇到一个坑:MySQL 8.0默认用了caching_sha2_password插件,老版PHP的mysqli连不上。这时候PDO反而稳,因为它的驱动会处理。或者你干脆把MySQL用户改成mysql_native_password,但治标不治本。版本兼容这破事,PDO是最省心的选择。

还有,别在生产环境把错误信息直接print出来。上面代码里die显示错误,那是给本地调试用的。线上应该记日志,然后给用户一个中性的提示。我见过把数据库密码打在页面上的,那酸爽,第二天公司服务器就被挖矿了。

写代码这事,没有银弹。但PDO+预处理,基本能覆盖你90%的需求。剩下的10%,等真遇到了再Google也不迟。

Tags:

相关文章

  • 信用卡被盗刷怎么追回

    百科

    凌晨三点,手机屏幕亮起来。短信提示消费了八千多块,在境外某珠宝店。我第一反应是诈骗短信,翻了个身想继续睡。直到第二笔、第三笔扣款接连弹出来,我才猛地坐起来,心脏狂跳。 信用卡就在钱包里躺着,但钱确实在 ...

    【百科】

    阅读更多
  • 对于卡口值勤漏洞情况说明

    百科

    上个月三号凌晨两点,我在城东高速口替班。一辆冀E牌照的半挂车停在卡口前,司机摇下车窗递出通行证,我扫了一眼——证件边缘的防伪线断了一截。拿紫外线灯照,水印模糊得像隔夜茶渍。司机催我快点,说后面还有三辆 ...

    【百科】

    阅读更多
  • 最全的旧书二手书网站

    百科

    ```html 最全的旧书二手书网站 body { font-family: 'Georgia', '宋体', serif; line-height: 1.8; color: #2c2c2c ...

    【百科】

    阅读更多


友情链接