php-sql查询构造函数

pjngdqdw  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(351)

关闭。这个问题是基于意见的。它目前不接受答案。
**想改进这个问题吗?**更新这个问题,这样就可以通过编辑这篇文章用事实和引文来回答。

两年前关门了。
改进这个问题
选项1:首先查询数据,然后将数据传递给构造函数
选项2:使用构造函数查询数据,然后填充属性
选项1示例

$val1 = 1;
$query = mysql_query("SELECT val2, val3, val4 FROM table WHERE val1 = '".$val1."'");
$row = mysql_fetch_assoc($query);
$o = new Class($row['val1'], $row['val2'], $row['val3'], $row['val4']);

选项2示例

$val1 = 1;
$o = new Class($val1);

// in Class constructor
public function __construct($val1) {
    $query = mysql_query("SELECT val2, val3, val4 FROM table WHERE val1 = '".$val1."'");
    $row = mysql_fetch_assoc($query);
    $this->val1 = $row['val1'];
    $this->val2 = $row['val2'];
    // etc ...
}

笔记
我很清楚 mysql_query 已弃用。请抵制强烈的冲动告诉我,而联系我的下午。
我在问选项2是不是不好的实践,或者在面向对象领域中是否存在任何众所周知的可预见的困境。对我来说这似乎是个更干净的选择。

8xiog9wr

8xiog9wr1#

把这个给负责人看。

但还是回到你的问题上来。
尽管我不喜欢这样回答,但我认为选项2肯定会使代码更干净,但是您也可以通过在类中创建一个返回所需内容的方法使代码更干净。

<?php

class SomeName extends DBClass
{
    // No need for the construct in this case

    public function fetchResults($val)
    {
        $notSoDirtyVal = mysql_real_escape_string($val);

        $query = "SELECT val2, val3, val4 FROM table WHERE val1 = '".$notSoDirtyVal."'"// Make sure you escape, sanitize, and clean this!!!!!

        $stmt = mysql_query($query); 

        $results = mysql_fetch_assoc($query);

        return $results;
    }
}
?>

在你的另一个文件上,你可以这样做

<?php
$value1 = 1;

$o = new SomeName;
$results = $o->fetchResults($value1);
pw9qyyiw

pw9qyyiw2#

好。。。你有更大的问题比把你的查询,但。。。
我认为选项1是最好的,因为您可以在其他地方用非db的数据示例化该类。
换句话说,该类不受db的约束。

相关问题