mysql_は非推奨になっているため、プリペアドステートメントの使用を検討してください。また、不注意または経験が浅く、クエリ文字列を適切にエスケープしない場合は、SQLインジェクションの影響を受けやすくなります。
mysqli_を使用した解決策は次のとおりです。
$link = mysqli_connect("localhost", "user", "password", "database") or die(mysqli_error($link));
$stmt = mysqli_stmt_init($link);
$query = 'SELECT NAME,AUTHOR,CITY FROM TESTIMONIALS ORDER BY RAND() LIMIT 3';
$arrTestimonials = array();
if (mysqli_stmt_prepare($stmt, $query)) {
mysqli_stmt_bind_result($stmt, $out_name, $out_author, $out_city);
mysqli_stmt_execute($stmt);
while (mysqli_stmt_fetch($stmt)) {
$arrTestimonials[]['name'] = $out_name;
$arrTestimonials[]['author'] = $out_author;
$arrTestimonials[]['city'] = $out_city;
}
} // error preparing statement
配列は次のように構成されます。
Array
(
[0] => Array
(
[name] => Name 1
[author] => Author 1
[city] => City 1
)
[1] => Array
(
[name] => Name 2
[author] => Author 2
[city] => City 2
)
[2] => Array
(
[name] => Name 3
[author] => Author 3
[city] => City 3
)
)