2016-05-10 7 views
0

私は非常に単純なスクリプトを作成しました。このスクリプトは情報を取得してデータベースに挿入すると仮定していますが、何も起こりません。私は、URLに次の実行を試してみた:php api insert queryデータベースに追加しない

http://localhost/insert.php?title=test&body=lol&longitude=12&latitude=53&status=0

<?php 

    $db = new mysqli("localhost","test","test", "test"); 

    // Check connection 
    if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    if (isset($_GET['title']) && isset($_GET['body']) && isset($_GET['longitude']) && isset($_GET['latitude'])) { 
    $title = $_GET['title']; 
    $body = $_GET['body']; 
    $longitude = (float)$_GET['latitude']; 
    $latitude = (float)$_GET['latitude']; 


    $strSQL = $db->query("INSERT INTO camps (title, body, longitude, latitude, status) VALUES (`$title`, `$body`, `$longitude`,`$latitude`, 0)"); 



    } 



?> 
+0

ローカルホストは動作していますか?あなたが知っているものに移動すると、PHPの出力を得ますか? – Richard

+1

データベースクエリを実行した後でエラーをチェックします。私はMySQLがあなたにあらゆる種類の問題を伝えていると確信しています。初心者にとって、あなたはどこにいてもいけないバックティックを使用しています。文字列値も引用していません。それとは別に、あなたはSQLインジェクションを広く受けていて、実際にそのクエリの中の*何かを実行しようとしている可能性があります。 – David

+0

$ strSQLはtrueまたはfalseですか?また、自動コミットが有効になっているかどうかを確認するには、後に「コミット」を追加します。 –

答えて

1

クエリを実行した後にエラーをチェックする必要があります。

これらは、エスケープする列名のため、クエリの値を囲むバックティックを削除します。

$strSQL = $db->query("INSERT INTO camps (title, body, longitude, latitude, status) VALUES ('$title', '$body', '$longitude','$latitude', 0)"); 

しかし、最適な解決策は、準備されたステートメントについて学ぶことです。

関連する問題