小白寻找懂 PHP 的大佬,在下有点问题想请教。。

2020-05-29 12:22:20 +08:00
 iamverylovely

请问 php 这样操作数据库稳(安全)吗?,并发不大,体验要求也不高,百来人(使用人数),如果行的话,我就要开始咯。


function db_conn($sql) {
	$SqlConn = new PDO("mysql:host=localhost;dbname=test", "root", "ll1314");
	$SqlConn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
	$IsQuery = $SqlConn->prepare(array_shift(($sql)));
	$IsChange=$IsQuery->execute($sql);
	$ArrayResult = $IsQuery->fetchAll();
	return !empty($ArrayResult)?$ArrayResult:$IsChange;
}

$sql=Array("select * from isuser where uid=?","42");

//$sql=Array("INSERT INTO `test`.`isuser`(`user`, `passwd`, `nickname`) VALUES (?, ?, ?)","testUser","pass","iamverylovely");

var_dump(db_conn($sql));

1422 次点击
所在节点    问与答
14 条回复
iamverylovely
2020-05-29 12:25:50 +08:00
在线等摸鱼程序员出现。
iamverylovely
2020-05-29 12:26:51 +08:00
打开浏览器,关闭浏览器,刷新,刷新!
sanggao
2020-05-29 12:28:14 +08:00
可以 pdo 绑定可以有效防止注入
iamverylovely
2020-05-29 12:37:31 +08:00
@sanggao 好的,我去试试。。
nyfwan123
2020-05-29 12:59:20 +08:00
return 容易暴露异常,建议优化。
iamverylovely
2020-05-29 13:03:55 +08:00
@nyfwan123 error_reporting(0) 可以忽略掉那些异常吗
nyfwan123
2020-05-29 13:05:25 +08:00
@iamverylovely 可以忽略 但是与你预期的返回值不符了 最好函数里捕获异常 再 return
nyfwan123
2020-05-29 13:08:51 +08:00
@iamverylovely 或者参考#3 所说 你去看一下官方文档有 pdo 的示例 或者直接引用诸如 medoo 的第三方库。
iamverylovely
2020-05-29 13:09:27 +08:00
@nyfwan123 好的,谢谢。
icyluna
2020-05-29 13:24:16 +08:00
推荐 medoo 真心好用
ccppgo
2020-05-29 13:55:35 +08:00
http://doc.workerman.net/components/workerman-mysql.html 这个类库封装的也不错, 10 楼推荐的 medoo 感觉 where 是真心别扭(对于习惯 ORM 的人来说)
DavidNineRoc
2020-05-29 13:56:30 +08:00
1. 把 pdo 封装成单例,不要每次查询一个新连接
2. 不要 fetchAll, 直接 fetch, 如果要全部才 fetchAll. 区分只拿一条和多条的区别.(或者你在 SQL 显式写 limit 1,很多人不喜欢写,但很重要.)
yc8332
2020-05-29 14:09:50 +08:00
至少搞个单例吧。。不然操作 10 次数据库,建了 10 个实例
iamverylovely
2020-05-29 14:16:41 +08:00
@DavidNineRoc
@yc8332 好的,摸鱼怪们

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/676631

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX