わかりました、始める前に、この問題に関するこのサイトのすべての回答を読みましたが、まだ正しく理解できていません。準備ステートメントがオブジェクトを返さないため、PHP がこのエラーをスローしていることはわかっています。理由がわかりません。これが私のコードです:
$stmt = $this->db->prepare("INSERT INTO locations (type, time, street, city, state, country, age, admission, rsvp_limit, keyword1, keyword2, keyword3, description, latitude, longitude, date_posted, member_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, now(), '1')");
var_dump($stmt);
if (!$stmt->bind_param("sssssssiissssdd", $type, $date, $street, $city, $state, $country, $age, $admission, $rsvp, $keyword1, $keyword2, $keyword3, $description, $latitude, $longitude)) {
throw new ErrorException($stmt->error, $stmt->errno);
}
$stmt->execute();
$stmt->close();
このステートメントに送信され、エコーされる値は次のとおりです。
TYPE: Party DATE: 1969-12-31 19:12:00 STREET: 50 Barret Parkway CITY: Marietta STATE: Georgia COUNTRY: United States AGE: 25+ ADMISSION: 20 RSVP: 1000 KEYWORD1: key1test KEYWORD2: key2test KEYWORD3: key3test DESCRIPTION: Description test LATITUDE: 33.950500 LONGITUDE: -84.535900
ここで、前の文字列は単なるエコー文字列であるため、すべて大文字の単語は実際にはデータベースに送信されず、コロンの後のステートメントのみが送信されることに注意してください。私はデータベースを20回チェックしましたが、すべてのスペルがデータベース内の行に対して正しく、十分なスペースと正しいタイプがあります。
私はこの問題を過去 5 時間見つめていましたが、休憩を取ってインターネットで答えを探し、空白を描きました。誰でも何が起きているか知っています。慰めになる場合は、手動でデータベースにフィールドを追加し、$_GET 変数で問題なく取得できます。