想问问
$do = new mysqli(DBHOST, DBUSERNAME, DBPASSWORD, $config['db']);
当使用了以下的UPDATE语句 (或 INSERT....)
$do->query(
"UPDATE `user` SET
`session` = '1'
WHERE `id` = '123' "
);
如何有效的知道是否有执行成功?
让我可以做抛出例外的判断?
以及当我要 SELECT 时
$found =$do->query(
"SELECT 1 FROM `user`
WHERE `id` = '1' "
);
假设有找到,能够怎么判断?
有没有预设可用的函数?
我的方式为
$found = mysqli_num_rows($do->query(
"SELECT 1 FROM `user`
WHERE `id` = '1' "
));
if (!$found) ...
只是这样好像有点⋯⋯诡异
以上有没有更简洁或更有效率的方式来判断呢?
例如可以讓語句只要很简单的回布林值就行?
基于mysqli/pdo的相互未兼容的状态, 我建议做二次封装, 全部用"返回受上一个 SQL 语句影响的行数" 来判断是否成功.
pdo 读类操作需要判断: PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数
pdo 写类操作PDO::exec() 在一个单独的函数调用中执行一条 SQL 语句,返回受此语句影响的行数
pdo可以重新封装一个query, 统一返回影响行数字类型.. 并且以try纠错..
mysqli
虽然mysqli_query大致有对返回定义. 但事实上需要大量测试才可以验证, 为了更兼容,
个人建议在返回对象时, 对mysqli_num_rows( mysqli_result $result) : int进行判断.
在返回布尔值时, 直接对mysqli_affected_rows() 进行判断. 两个方法都100%返回数字型.
代码编写时, 均用try做纠错处理...