2016-09-23 9 views
1

私は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クエリを持っています...

本当に私を傷つけるのは、正確に同じコードがローカルワークスペースで正常に動作することです。なぜ、私は何を探して何を探すべきかわかりません - 助けてください。

問題が見つかりました - ホスト上にない列の名前にわずかな違いがありました。

+0

最初に行うべきこと、それがためにだかどうかを確認するために、そのステートメントをプリントアウト:prepare()コールからdb_connect()コールを分離する根本的な原因を特定するのに役立つかもしれません。 – e4c5

+0

このリンクを参照してください。http://www.w3schools.com/php/php_mysql_prepared_statements.asp –

+0

MySQLサーバーのバージョンをローカルとリモートホストの両方で見てみましょう。 – Havelock

答えて

2

prepare()関数がnullを返すようです。これはSQLのエラーが原因で発生する可能性がありますが、おそらくローカルマシンで動作する場合はデータベース接続に問題があります。

接続エラーが報告された場合は、$this->db_connect()機能を確認してください。 、

$connection = $this->db_connect(); 
var_dump($connection); 
$stmt = $connection->prepare(...); 
+0

これを試してみましたが、私は接続を持っています - 文を作成しようとするとまだ失敗します。 – BigMac66

+0

あなたはSQLがバグかもしれないと言いました。 – BigMac66

関連する問題