私の開発環境では、テーブルのデータのリストを取得して画面に出力できるクラス内に静的関数があります。それはうまくいきます。これが私のコードです:
public static function getList( $numRows=1000000, $order="name ASC" ) {
$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM posttypes ORDER BY " . mysql_real_escape_string($order) . " LIMIT :numRows";
$stmt = $conn->prepare( $sql );
$stmt->bindValue( ":numRows", $numRows, PDO::PARAM_INT );
$stmt->execute();
$list = array();
while ( $row = $stmt->fetch() ) {
$postType = new PostType( $row );
$list[] = $postType;
}
//Now get total number of posts that match criteria
$sql = "SELECT FOUND_ROWS() AS totalRows";
$totalRows = $conn->query( $sql )->fetch();
$conn = null;
return ( array( "results" => $list, "totalRows" => $totalRows[0] ) );
}
ただし、本番環境では、レコードを取得できません。しかし、phpMyAdmin 内でその正確なクエリを実行すると、必要な正確なレコードが得られます。
何が起こっているのかわからない?本番環境にセットアップするのはこれが初めてです。ブルーホストを使用しています。
更新:わかりました、mysql_real_escape_string を削除して修正しましたが、文字列をエスケープする方が安全だと思いますが、これは false を返し、SQL ステートメントに失敗する必要があります。みんな助けてくれてありがとう。