2

私はこの例を使用しています: www.jtable.org

jTablePHPバージョンをダウンロードしました。次に、スクリプトを編集しました。jTableの単純なバージョンは機能していますが、編集したバージョンは機能していません

リストを作成することはできますが、行を追加することはできません。このコードは問題を引き起こしています。ただし、PHPはエラーメッセージを表示しません。

else if($_GET["action"] == "create")
{
    //Insert record into database
    $result = mysql_query("INSERT INTO veriler(bolge, sehir, firma, adres, tel, web) VALUES('" . $_POST["bolge"] . "', '" . $_POST["sehir"] . "', '" . $_POST["firma"] . "', '" . $_POST["adres"] . "', '" . $_POST["tel"] . "', '" . $_POST["web"] . "'");

    //Get last inserted record (to return to jTable)
    $result = mysql_query("SELECT * FROM veriler WHERE id = LAST_INSERT_ID();");
    $row = mysql_fetch_array($result);


    //Return result to jTable
    $jTableResult = array();
    $jTableResult['Result'] = "OK";
    $jTableResult['Record'] = $row;

    print json_encode($jTableResult);
}

何が問題ですか?

4

3 に答える 3

10

この行には、問題があります。

$result = mysql_query("INSERT INTO veriler(bolge, sehir, firma, adres, tel, web) VALUES('" . $_POST["bolge"] . "', '" . $_POST["sehir"] . "', '" . $_POST["firma"] . "', '" . $_POST["adres"] . "', '" . $_POST["tel"] . "', '" . $_POST["web"] . "'");

INSERTクエリの形式は次のとおりです。

INSERT INTO table (column1, column2, etc) VALUES (value1, value2, etc);

VALUES部分の閉じ括弧を見逃しました。

コードを改善するには、次のようにします。

$result = mysql_query("YOUR QUERY") or die('ERROR: '.mysql_error());

そして、SQLインジェクションを読んでください。

于 2012-09-15T15:29:44.580 に答える
3

これがあなたが忘れている問題です)

 $result = mysql_query("INSERT INTO veriler(bolge, sehir, firma, adres, tel, web) 
                       VALUES('" . $_POST["bolge"] . "', '" . $_POST["sehir"] . "', '" . $_POST["firma"] . "', '" . $_POST["adres"] . "', '" . $_POST["tel"] . "', '" . $_POST["web"] . "'");

使用する

$result = mysql_query("INSERT INTO veriler(bolge, sehir, firma, adres, tel, web) VALUES
                         ('{$_POST["bolge"]}', '{$_POST["sehir"] }' , '{$_POST["firma"]}' , '{$_POST["adres"] }', '{$_POST["tel"]}', '{$_POST["web"]}' )" ) ;
于 2012-09-15T15:25:24.067 に答える
2

まず第一に、あなたは1つのクエリを減らすことができますlast_inset_id()

else if($_GET["action"] == "create")
{
    //Insert record into database
    $result = mysql_query("INSERT INTO veriler(bolge, sehir, firma, adres, tel, web) VALUES('" . $_POST["bolge"] . "', '" . $_POST["sehir"] . "', '" . $_POST["firma"] . "', '" . $_POST["adres"] . "', '" . $_POST["tel"] . "', '" . $_POST["web"] . "'"));
//Get last inserted record (to return to jTable)
//check youe result query you are missing something here
$id=mysql_insert_id();
//this will automatically give you last id 

//Return result to jTable
$jTableResult = array();
$jTableResult['Result'] = "OK";
$jTableResult['id'] = $id;
$jTableResult['Record'] = $row;
$jTableResult['aderes'] = $_POST['adres'];
//and so on 
print json_encode($jTableResult);

}

于 2012-09-15T15:36:29.023 に答える