怎么可能做这样的事情?

时间:2013-06-17 12:41:29

标签: php

我正在尝试将这些文件放在一个单独的文件中,该文件将包含在每个页面中

$sql = 'select id, name, age, address, pincode from json where name = :name';
$arr = array(":name" => $name);
// There are some 30 diff sql's and arrays

另一页

$name = 'peter';
$conn = connect();

function myType(){
global $conn;
global $sql; 
global $arr; 
$stmt = $conn->prepare($sql);
$stmt->execute($arr);

while( $row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
      foreach ($row as $value) {
      echo $value.' <br>';
      }
   }
}

myType();

我正在尝试将sqls和数组保存在单独的文件中,并在需要时使用它们。保持清洁,易于维护。但变量后来被声明,这给了我:Notice: Undefined variable: name in C:\web\apache\htdocs\dev\json.php on line 24

你能看到一种方法来做到这一点,而不是丑闻吗?

2 个答案:

答案 0 :(得分:0)

你应该使用两个文件

  1. sql.php
  2. fetch.php
  3. 然后在fetch.php中,您将使用require_once 'sql.php'

    这是fetch.php的代码:

    $name = 'peter';
    $conn = connect();
    require_once 'sql.php';
    function myType(){
    global $conn;
    global $sql; 
    global $arr; 
    $stmt = $conn->prepare($sql);
    $stmt->execute($arr);
    
    while( $row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
          foreach ($row as $value) {
          echo $value.' <br>';
          }
       }
    }
    
    myType();
    

    这是sql.php

    $sql = 'select id, name, age, address, pincode from json where name = :name';
    $arr = array(":name" => $name);
    

    这应该会有所帮助,您可以随时使用sql.php。

答案 1 :(得分:0)

在单独的include中存储查询和绑定参数有点奇怪。如何在include?之后更改绑定参数

我的建议是创建一个处理数据库操作的模型。这样做的好处是,您可以封装数据库工作并将其与应用程序逻辑分开,并且可以轻松地在整个数据库中重复使用。

基本示例:

class CustomersModel
{
    protected $db;

    public function __construct($db)
    {
        $this->db = $db;
    }

    public function getByName($name)
    {
        $result = array();
        $sql = 'select id, name, age, address, pincode from json where name = :name';

        if($stmt = $conn->prepare($sql))
        {
            $stmt->execute(array(":name" => $name));
            $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
        }
        return $result;
    }
}

用法:

require_once('/path/to/CustomerModel.php');
$conn = connect();

$model = new CustomerModel($conn);
$customers = $model->getByName('peter');

foreach($customers as $c)
{
    echo htmlspecialchars($c['name']) . '<br />;
}