这段代码在我的类Testing
中。
class Testing {
// irrelevant code
private $dbh;
function connect(){
try{
$dbh = new PDO("mysql:host=127.0.0.1;port=3306;dbname=database", "username", "password");
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
print "Connected to MYSQL<br/><br/>";
return true;
}
catch(PDOException $e){
return false;
}
}
function setData($sql){
try{
$stmt = $dbh->query($sql); // Line 39
if($stmt == null){
return false;
}
else{
return true;
}
}
catch(PDOException $e){
$e->getMessage();
}
}
function getData($sql){
if(!setData($sql)){
print "SQL statment is null<br/><br/>";
}
else{
try{
foreach ($dbh->query($sql) as $row) {
# code...
print "<p>".$row['fName']. ' '. $row['lName']. ' ' .$row['email']. "</p>";
}
}
catch(PDOException $Exception){
$Exception->getMessage();
}
}
}
// more irrelevant code
}
然后我在index.php中调用getData((:
<?php
require_once "dataLayer.php";
$x = new Testing();
$x-> connect();
$x->getData("SELECT * FROM faculty");
?>
知道这段代码有什么问题吗?语法有问题吗?
现在我明白问题出在哪里了。当您在getData()
中调用setData()
时,会发生这种情况。
由于您将setData()
定义为同一类的方法,因此您应该从类内部调用它。所以改变
function getData($sql){
if(!setData($sql)){
自
function getData($sql){
if(!$this->setData($sql)){
注意:将来请发布完整的错误消息(包括行号(并标记发生错误的行(请参阅我对你的帖子的编辑(,以及一些(相关(代码,这些代码会建议这些函数被定义为类方法。