我试图把这些放在一个单独的文件,将包括在每个页面
$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();
我试图保持sql和数组在一个单独的文件,并在需要时使用它们。保持物品清洁,易于维护。但是变量是稍后声明的,这给了我:Notice: Undefined variable: name in C:'web'apache'htdocs'dev'json.php on line 24
你能找到一种既不难看又能做到这一点的方法吗?
你应该使用两个文件
- sql.php
- fetch.php
然后在fetch。php中使用require_once 'sql.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
将查询和绑定的参数存储在单独的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 />;
}