我想知道为什么我不能在PHP中这样做。
db.php中
function db_connect(){
try {
$db = new PDO('xxxxxxxx');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
echo $e->getMessage();
}
return $db;
}
FUNCTION.PHP
require_once('db.php');
$db = db_connect();
//Incoming AJAX request
if(isset($_POST['rowId'])) $rowId = $_POST['rowId'];
if(isset($_POST['func'])){
$func = $_POST['func'];
switch($func){
case "info":
echo json_encode(info($rowId));
break;
}
}
function info($rowId){
global $db;
$rowInfo = $db->prepare("SELECT name FROM table WHERE id = :rowId");
$rowInfo->bindParam(':rowId', $rowId);
$rowInfo->execute();
//do more stuff
我收到此错误
捕获致命错误:类PDO的对象无法转换为字符串
我可以用两种方式解决它
$db
传递给函数有什么问题? execte()发生错误。我可以在它之后移除任何东西,但仍然会出错。
答案 0 :(得分:0)
所以$ rowID包含一个对象。
execute函数尝试将Message对象转换为字符串,但发现没有声明__toString函数。
所以要么声明
public function __toString() {
return $the_string;
}
或创建另一个可以传递给execute函数的公共函数/成员。