PDO를 처음 사용합니다. 여기 내 기능이있다. 우리는 데이터베이스에 연결되어 있고 모든 것이 작동하지만이 함수를 호출하면 실행될 나머지 PHP가 종료됩니다. 분명히 뭔가 잘못되었습니다. PHP PDO가 표준 기능을 실행합니다.
$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), 함수 이름 등의 매개 변수를 사용할 수 없습니다. 이는 작동 방식이 아닙니다. – Wrikken
이것은 실제로 작동합니까? '$ dbh '는 처음부터 어디서 오는가? 또한 오류를 검사하는 방법은 무엇입니까? – deceze
마찬가지로 나는 우리가 이미 데이터베이스에 연결되어 있다고 말했다. –