Я читаю эту книгу «PHP и MySQL Web Development от Луки Веллинг Лаура Томсон Четвертое издание» стр. 751 для тех из вас, кто знаком с этой книгой. Однако в представленном в книге решении используется MySQLi DB Connector, который отлично работает при тестировании. Я хотел бы принять это решение в один из моих проектов, который использует PHP PDO Connector, но у меня возникла проблема, пытаясь получить те же результаты, что и в учебнике. Я хочу немного помочь в преобразовании MySQLi Connector для обработки процесса PDO. Оба примера используют MySQL DB. Я не уверен, что я делаю неправильно и не нуждаюсь в помощи.Как конвертировать MySQLi-коннектор в PHP PDO
Я пытаюсь получить мою процедуру PDO для получения того же результата для расширенного массива по идентификатору children, как и исходный массив текстовых книг, чтобы он работал.
// Example taken from the text book
function expand_all(&$expanded) {
// mark all threads with children as to be shown expanded
$conn = db_connect();
$query = "select postid from header where children = 1";
$result = $conn->query($query);
$num = $result->num_rows;
for($i = 0; $i<$num; $i++) {
$this_row = $result->fetch_row();
$expanded[$this_row[0]]=true;
}
}
// The print_r form the text book example looks like this:
// result:
mysqli_result Object ( [current_field] => 0 [field_count] => 1
[lengths] => [num_rows] => 3 [type] => 0
)
// expended:
Array ([0] => 1) Array ([0] => 2) Array ([0] => 4)
//--------------------------------------------------------------//
// Know, here is my new adopted changes for using PHP PDO connector
function expand_all(&$expanded)
{
// mark all threads with children to be shown as expanded
$table_name = 'header';
$num = 1;
$sql = "SELECT postid FROM $table_name WHERE children = :num";
try
{
$_stmt = $this->_dbConn->prepare($sql);
$_stmt->bindParam(":num", $num, PDO::PARAM_INT);
$_stmt->execute();
$result = $_stmt->fetchAll(PDO::FETCH_ASSOC);
// get the $expanded children id's
foreach ($result as $key => $value)
{
foreach ($value as $k => $val)
{
$expanded[$k] = $val;
}
}
return $extended;
}
catch(PDOException $e)
{
die($this->_errorMessage = $e);
}
//close the database
$this->_dbConn = null;
}
// The print_r for the result looks like this:
Array ([0] => Array ([children_id] => 1)
[1] => Array ([children_id] => 2)
[2] => Array ([children_id] => 4)
)
// The return extended print_r for the children id's
// look like this:
Array ([children_id] => 4);
Так какая разница вы видите ? –