【问题标题】:Object orientated mysql num_rows query in one line一行中的面向对象的mysqli num_rows查询
【发布时间】:2013-08-11 08:02:21
【问题描述】:

基本上,我想要做的是删除额外的 $result 行并将其全部包含在一个 IF 语句中。这在 PHP 中是否可以使用面向对象的查询?

$result = $mysqli->query("SELECT id FROM users WHERE id ='".$user."'");
if ($result->num_rows == 1) {
    // Continue...
}else{
    // Does not exist, create...
}

【问题讨论】:

  • 简单使用 if($result) {...} 如果没有结果,则返回一个空变量,如果在 if() 中使用则为假

标签: php mysql mysqli object-oriented-database


【解决方案1】:

首先,让我怪罪你的意图。
“在一行中做某事”(暗示“使用一些语法技巧”)不是要走的路。

OOP 可以缩短您的代码,但不是您要求的方式。使用 OOP 来缩短这段代码意味着创建一个类并调用一些方法:

if ($user->exists($user)) {
    // Continue...
}else{
    // Does not exist, create...
}

这就是 OOP 的工作原理。

虽然在 exists() 方法内部,您必须使用通常的多行代码。但是,您也可以缩短它,依次使用 database class

function exists($id)
{
    return (bool)$this->db-getOne("SELECT id FROM users WHERE id = ?i", $id);
}

另外,请注意,您没有使用 prepared statements,这会使 mysqli 完全无用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    相关资源
    最近更新 更多