0

非オブジェクトでメンバー関数combinestring()を呼び出すときに問題が発生しました。

**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."'";
}

$ a-> combinestring($ val);がわからない

この問題を解決する方法。

よろしくお願いします

4

2 に答える 2

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クラスはクエリへの入力をエスケープせず、それは悪いことです。

于 2012-06-28T05:31:54.310 に答える
0

エラーが発生しています

非オブジェクトでのメンバー関数の結合文字列() の呼び出し

オブジェクトではない変数に対してメンバー関数を呼び出しているためです。つまり$a、オブジェクトではありません。

$astring.php では、変数にローカル スコープがあるため、関数定義内では使用できません。そのようなオブジェクト インスタンスにアクセスすることはできません。ただし、グローバル変数を使用してこれを行うことができます。

ファイル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

于 2012-06-28T05:14:10.197 に答える