私はPHPとMySQLを使用しています。私は次のPHPコードを持っています:MySQLが準備した内部エラーを生成するステートメント
$stmt = $this->db_connect()->prepare(
"SELECT P.`pool_id`, P.`pool_name`, PL.`player_id`, PL.`alias`, PP.`paid` "
."FROM `pool` AS P, `player_pool` AS PP, `players` AS PL "
."WHERE P.`sponsor` = ? "
."AND P.`pool_id` = PP.`pool_id` "
."AND PP.`player_id` = PL.`player_id` "
."ORDER BY P.`pool_name`, PL.`alias`;");
echo "validated_user_id=".$_SESSION['validated_user_id'].PHP_EOL;
echo "stmt=".($stmt == null);
$stmt->bind_param("i", $_SESSION['validated_user_id']);
それは500の内部サーバーエラーを返します。ログが表示されます[23-Sep-2016 00:05:06] PHP致命的なエラー:非オブジェクト上のメンバー関数bind_param()を呼び出します。 validated_user_idには有効な値がありますが、$ stmt変数はnullです。
最初は私が予約語を使用していると思ったので、私はすべてをエスケープしました。成功しませんでした。私は非常によく似ている多くの他のDBクエリを持っています...
本当に私を傷つけるのは、正確に同じコードがローカルワークスペースで正常に動作することです。なぜ、私は何を探して何を探すべきかわかりません - 助けてください。
問題が見つかりました - ホスト上にない列の名前にわずかな違いがありました。
最初に行うべきこと、それがためにだかどうかを確認するために、そのステートメントをプリントアウト:
prepare()
コールからdb_connect()
コールを分離する根本的な原因を特定するのに役立つかもしれません。 – e4c5このリンクを参照してください。http://www.w3schools.com/php/php_mysql_prepared_statements.asp –
MySQLサーバーのバージョンをローカルとリモートホストの両方で見てみましょう。 – Havelock