求解对非对象的成员函数combinetring()的调用

时间:2012-06-28 05:06:45

标签: php class

当调用成员函数combinetring()对非对象时,我遇到了一个问题。

**Index.php**
inlcude("string.php");
calldata('usa');


**string.php**
$a=new a();
funciton calldata($val){
$st1="select a from table 1 where country=".$a->combinestring($val);
return $st1;
}

**Class A**
function combinestring($abc){
   Return "'".$abc."'";
}

Unknow $ a-> combinetring($ val);

如何解决这个问题。

最好的问候

2 个答案:

答案 0 :(得分:0)

您收到错误

  

在非对象上调用成员函数combinetring()

因为您正在调用非对象变量的成员函数。这意味着$a不是对象。

在string.php中,您不能在函数定义中使用$a,因为变量具有局部范围。您无法像这样访问该对象实例。但是,您可以使用全局变量来执行此操作。

您的string.php文件应该是这样的:

$a=new a();
funciton calldata($val){
   global $a;
   $st1="select a from table 1 where country=".$a->combinestring($val);
   return $st1;
}

前往此链接以获取有关变量范围的更多信息:http://php.net/manual/en/language.variables.scope.php

答案 1 :(得分:0)

使用PDO

funciton calldata($val){
   $st1="select a from table 1 where country = ?";
   $pdo = new PDO('host', 'user', 'pass');
   $result = $pdo->prepare($st1)->execute($val);
   return $result;
}

这与您正在进行的操作有很大不同,但是您的a类不会逃避查询的输入而且这很糟糕。