我想知道爲什麼我無法在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
我得到這個錯誤
Catchable fatal error: Object of class PDO could not be converted to string
我能解決這個問題兩種方式
- 不要使用任何約束PARAMS(這顯然是沒用這裏)
- 通
$db
到函數
問題是什麼?該錯誤發生在execte()上。我可以刪除任何東西,但仍然會出現錯誤。
您還需要在全局範圍內分配'$ db'。您的摘錄中沒有任何內容沒有斷言這是包含「functions.php」的地方。 – mario 2014-10-03 04:46:33
@mario他有'$ db = db_connect();',它將它分配到全局範圍中。 – Barmar 2014-10-03 04:48:12
錯誤消息表明變量IS設置爲PDO對象,但您在需要字符串的地方使用它,如'echo $ db;'。有哪些錯誤發生? – Barmar 2014-10-03 04:49:22