Мне интересно, почему я не могу это сделать в 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 (что, очевидно, бесполезно здесь)
- Pass
$db
в функцию
В чем проблема? Ошибка возникает на execte(). Я могу удалить что-нибудь после него и все еще получить ошибку.
Вам нужно также присвоить '$ db' в глобальной области. Ничто в ваших отрывках не утверждает, что именно здесь включен 'functions.php'. – mario
@mario У него есть '$ db = db_connect();', который присваивает его в глобальной области. – Barmar
Сообщение об ошибке указывает, что переменная IS установлена в объект PDO, но вы используете ее в месте, где требуется строка, например 'echo $ db;'. Что на линии, которая получает эту ошибку? – Barmar