【发布时间】:2012-07-02 05:30:04
【问题描述】:
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();
}
函数外的代码,即。反映表系统的那个工作正常但是函数内部的那个在稍后作为函数调用时会在调用后杀死所有内容并且没有执行。
【问题讨论】:
-
您不能将参数用于标识符(db/column/tablenames)、函数名等。它们不是这样工作的。
-
这真的有效吗?首先,
$dbh来自哪里?另外,检查错误怎么样? -
就像我说的,我们已经连接到数据库了。
-
不是您的问题,但您应该阅读 bindparam 和 bindvalue 之间的区别。
-
如果这不是它应该如何工作,那么我应该如何获得类似的结果