【发布时间】:2020-02-27 15:16:03
【问题描述】:
为了更好地解释我的问题,我有两个文件:dbh.inc.php
$dbServername = "localhost";
$dbUsername = "xxxxx";
$dbPassword = "secret";
$dbName = "databasename";
$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);
mysqli_set_charset($conn,"utf8");
if (!$conn) {
die("Connection failed: ".mysqli_connect_error());
}
$table1 = "users";//1
$table2 = "userprofile";//2
$table3 = "twofactorauth";//3
还有:database-query.func.php
function selectdb($data, $values, $url) {
include ('dbh.inc.php');
extract($data);
extract($values);
switch ($data['table']) {
case '1':
$table = $table1;
break;
case '2':
$table = $table2;
break;
case '3':
$table = $table3;
break;
}
$sql = "SELECT $rows FROM $table WHERE $where;";
print_r($sql);
die();
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
mysqli_stmt_close($stmt);
mysqli_close($conn);
header("Location: ".$url."?error=sqlerror");
die();
} else {
$amount = str_repeat('s', count($values));
$values = array_values($values);
mysqli_stmt_bind_param($stmt, $amount, ...$values);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$getResult = mysqli_fetch_assoc($result);
mysqli_stmt_close($stmt);
mysqli_close($conn);
$new = array_push($getResult, 'true');
return $getResult;
}
}
所以第一个持有数据库连接,而后者目前有插入、更新和选择的动态查询。我想知道我是否应该将这两个文件合并为一个。因为每次我需要连接时,我总是使用我的一个查询,反之亦然?
还有 2 个额外问题:正如您在我的连接文件中看到的,我有我的表名,我在其他文件中使用数字,并且在函数中将数字连接到名称。 最后我应该使用 PDO,为什么?
【问题讨论】:
-
这是一种糟糕的做法,原因不止一个
-
一个是这将导致您为脚本中的每个查询打开一个连接。这是一个相对缓慢的过程
-
为什么要通过给它们编号来混淆表名?只会让维护变得困难
-
看来使用这个你只能返回一个结果行
标签: php database mysqli database-connection