MySQLi stmt에 대한 가져 오기 배열 기능이없는 해결책을 찾기 위해 노력 중이며이 재미있는 코드가 있습니다. 이 코드가 사용 가치가 있다고 생각합니까? 거대한 보안 결함이 있습니까?MySQLi 준비 결과 배열
/*
* Utility function to automatically bind columns from selects in prepared statements to
* an array
*/
function bind_result_array($stmt)
{
$meta = $stmt->result_metadata();
$result = array();
while ($field = $meta->fetch_field())
{
$result[$field->name] = NULL;
$params[] = &$result[$field->name];
}
call_user_func_array(array($stmt, 'bind_result'), $params);
return $result;
}
/**
* Returns a copy of an array of references
*/
function getCopy($row)
{
return array_map(create_function('$a', 'return $a;'), $row);
}
신용 : 상식에 의해 요청 된 http://gunjanpatidar.wordpress.com/2010/10/03/bind_result-to-array-with-mysqli-prepared-statements/
: 나는이 코드에는 "큰 보안 결함"을 참조하십시오 없지만
$db = new PDO("mysql:host='localhost';dbname='testing'", 'username', 'password') or die('Could not connect to server');
$get_posts = mysqli_stmt_init($db);
mysqli_stmt_prepare($get_posts, 'select * from Chatposts where Chatid = ? and CPid > ? and Deleted = ? order by CPid desc limit ?');
mysqli_stmt_bind_param($get_posts, 'iiii', $chatroomid, $lastpost, $deleted, $limit);
mysqli_stmt_execute($get_posts);
mysqli_stmt_bind_result($get_posts, $newcolumn['ID'], $newcolumn['Chatid'], $newcolumn['Name'], $newcolumn['URL'], $newcolumn['Text'], $newcolumn['Datetime'], $newcolumn['IPaddress'], $newcolumn['Deleted']);
mysqli_stmt_store_result($get_posts);
mysqli_stmt_fetch($get_posts); // Trying to fetch array
mysqli_stmt_close($get_posts);
를 사용하여 코드입니다. 연결을위한 OOP와 나머지 코드를위한 절차 간 점프에 어떤 문제가 있습니까? STMT를 다루는 것보다 좀 더 쉽게 OOP를 배울 수 있습니다. – Rujikin
쿼리 처리를위한 전체 코드를 추가하여 질문을 편집하면 쿼리 정의에서 모든 데이터 가져 오기까지 PDO로 다시 작성하여 OOP 스타일이 실제로는 10 배 더 짧고 읽기 쉽도록 표시 할 수 있습니다. 쓰다. –
내 코드의 직접적인 복사본을 본다면 배우기가 훨씬 쉬울 것입니다. 코드를 정리하고 OP를 업데이트했습니다. 미리 감사드립니다 !! – Rujikin