此代码在我的班级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");
?>
知道这段代码有什么问题吗?语法有问题吗?
答案 0 :(得分:0)
现在我看到问题所在。当您在setData()
中呼叫getData()
时会发生这种情况
由于您将setData()
定义为同一个类的方法,因此您应该从类中调用它。所以改变
function getData($sql){
if(!setData($sql)){
到
function getData($sql){
if(!$this->setData($sql)){
注意:将来请发布完整的错误消息(包括行号)并标记出现错误的行(请参阅我的帖子编辑),以及一些(相关的)代码会建议将这些函数定义为类方法。