PDO的新功能。这是我的函数。我们连接到数据库并且一切正常,但是调用此函数时会杀死要执行的PHP的其余部分。显然它有问题。
$dbh = new PDO("mysql:host=$host;dbname=$database", $username, $password);
global $dbh;
/*** set the error reporting attribute ***/
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
function selectall($table){
$stmt = $dbh->prepare("SELECT * FROM :table");
$stmt->bindParam(':table', $table, PDO::PARAM_STR,20);
$stmt->execute();
$result = $stmt->fetchAll();
return $result;
}
在这样的页面上调用:
<?php $telephones = selectall('telephone'); foreach($telephones as $telephones) { echo $telephone['title'].', '; } ?>
编辑 - 我已经尝试了您的所有方法,并且在页面上调用该函数时仍然中断。这是整个代码。出于测试目的略有修改。
try {
$dbh = new PDO("mysql:host=$host;dbname=$database", $username, $password);
/*** set the error reporting attribute ***/
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM system";
foreach ($dbh->query($sql) as $row)
{
$url = $row['url'];
$election = $row['election'];
$election_date = $row['election_date'];
$sitename = $row['sitename'];
}
//FUNCTION
function selectall($table){
global $dbh;
$sql = "SELECT * FROM telephone";
foreach ($dbh->query($sql) as $row){
print $row['title'] .' - '. $row['name'] . '<br />';
}
}
/** close database connections **/
$dbh = null;
}
catch(PDOException $e) {
echo $e->getMessage();
}
函数外部的代码,即反映表系统的那个工作正常 然而,函数内部的代码在以后作为函数调用时,在调用它并且没有执行后会杀死所有内容。
当您尝试使用未定义的变量 ( $dbh
) 作为对象时,您的第二行会生成致命错误。
您需要像这样从全局范围导入它:
global $dbh;
或将其作为参数传递给函数。
修复此问题后,您的代码仍然不起作用,因为您不能将参数用于标识符(表或列名,甚至限制和偏移量)。不幸的是,您必须在那里诉诸字符串连接。
我认为问题是:$telephones as $telephones
试试这个:
$telephones = selectall('telephone'); foreach($telephones as $telephone) { echo $telephone['title'].', '; }