Php 如何概括我的SQL请求

Php 如何概括我的SQL请求,php,sql,Php,Sql,我没有花太多时间优化我的代码或改进其模块性,因为我一直在学习PHP,但我认为是时候这样做了。我想改进的第一件事是我的SQL调用。我进行了大量不同的SQL查询,它们都遵循两种不同的模式。我通常只是复制一个,粘贴到某个地方,然后更改需要更改的内容。显然,这是我需要模块化它们的危险信号 我的问题是,我不明白如何才能做到这一点,因为我访问的每个表都有不同数量的变量,有时我想要一个或两个,其他的我想要整个表。此外,有时我想按id、有时按姓名等进行选择。我只是在这里寻找正确方向上的一点,只是在想我应该如何做

我没有花太多时间优化我的代码或改进其模块性,因为我一直在学习PHP,但我认为是时候这样做了。我想改进的第一件事是我的SQL调用。我进行了大量不同的SQL查询,它们都遵循两种不同的模式。我通常只是复制一个,粘贴到某个地方,然后更改需要更改的内容。显然,这是我需要模块化它们的危险信号

我的问题是,我不明白如何才能做到这一点,因为我访问的每个表都有不同数量的变量,有时我想要一个或两个,其他的我想要整个表。此外,有时我想按id、有时按姓名等进行选择。我只是在这里寻找正确方向上的一点,只是在想我应该如何做时遇到了一些困难。以下是我的一些查询示例:

function pricesByAlcohol($alcID) {
    $query = 'SELECT store_id, price FROM price WHERE alc_id = '.$alcID;
    //echo $query."<br>";
    $i= 0; //index
    $result = array();

    if ($stmt = $this->db->prepare($query)){ 
        /* execute statement */
        if($stmt->execute()) {
            $stmt->bind_result($store_id, $price);
            while($stmt->fetch()) {
                $result[$i] = array('store' => $store_id, 
                                    'price' => $price);
                $i++;
                //echo $id." ".$img."/".$text."<br>";
            }
        } else
            //echo "error";

        /* close statement */
        $stmt->close();
    } else {
        //echo "Prepare in fetchActiveAds failed: (" . $stmt->errno . ") " . $stmt->error;
    }

    return $result;
}

function store($storeID) {
    $query = 'SELECT name, address, gps FROM store WHERE id = '.$storeID;
    //echo $query."<br>";

    if ($stmt = $this->db->prepare($query)){ 
        /* execute statement */
        if($stmt->execute()) {
            $stmt->bind_result($name, $address, $gps);
            while($stmt->fetch()) {
                $result = array('name' => $name, 
                                'address' => $address,
                                'gps' => $gps);
                //echo $id." ".$img."/".$text."<br>";
            }
        } else
            //echo "error";

        /* close statement */
        $stmt->close();
    } else {
        //echo "Prepare in fetchActiveAds failed: (" . $stmt->errno . ") " . $stmt->error;
    }

    return $result;
}

function getAlcoholIDByNameSize($name, $size) {
    $query = 'SELECT id FROM alcohol WHERE size_id = '.$size.' AND name = "'.$name.'"';
    //echo $query."<br>";

    if ($stmt = $this->db->prepare($query)){ 
        /* execute statement */
        if($stmt->execute()) {
            $stmt->bind_result($id);
            while($stmt->fetch()) {
                $result = $id;
                //echo $id." ".$img."/".$text."<br>";
            }
        } else
            //echo "error";

        /* close statement */
        $stmt->close();
    } else {
        //echo "Prepare in fetchActiveAds failed: (" . $stmt->errno . ") " . $stmt->error;
    }

    return $result;
}

谢谢

您正在按照应该使用的方式使用SQL

尽管这可能不是您想要的,但您可以尝试一些ORM机制,将SQL查询和结果检索隐藏在经典OOP后面。这将大大清理您的代码。对于PHP,您可以在以下线程上找到一些指针:


有一件事可以帮助您继续前进,那就是学习使用参数化查询,最好使用PDO作为数据库层。现在使用变量构建SQL语句时,很容易出现SQL注入和引用错误。看看如何用PHP编写参数化查询的示例。谢谢!我一定会调查的。