5

わかりましたので、オンラインでいくつかのチュートリアルを見つけて、それぞれのステップを順を追って説明しました。私の問題は、PHP よりも javascript/jQuery の方がはるかによく知っており、そのセクションで何が問題になっているのかをデバッグする方法さえわからないことです。基本的に、私はたくさんのボタンとフォームを持っています。ボタンが押されると、フォームのデフォルト値が決定されます。

jQuery側

$(document).ready(function(){
// CSPC and ADDUPDATE TOGGLE ARE DEFINED GLOBALLY
    $('ul#parts').on('click', 'button', function(){
        ADDUPDATETOGGLE = "ADD";
        CSPC = $(this).attr("data-cspc");
        var   form = $('div.sidebar form'),
              sr = 0;
        form.find("#cspc").val(CSPC);
        $.ajax({
            type: "GET",
            url: "getRate.php",
            data: "pid=A5843",
            dataType: "json",
            success: function(data){
                sr = data;
            }
        });
        form.find("#strokeRate").val(sr);
        showForm();
    });
});

PHP側

<?php

$host = "localhost";
$user = "username";
$pass = "password";
$databaseName = "movedb";
$tableName = "part parameters";

$con = mysql_connect($host, $user, $pass);
$dbs = mysql_select_db($databaseName, $con);
//get the parameter from URL
$pid=$_GET["pid"];
if (empty($pid)){
    echo "1"; //default rate
}
else{
    $db=mysql_pconnect("localhost");//connect to local database
    mysql_select_db("movedb", $db);//select the database you want to use
    if (!$db){
        echo ("error connecting to database");              
    }
    else{
        //connection successful
        $sql = "SELECT 'Processing Rate (ppm)' FROM 'part parameters' WHERE 'Part Number' LIKE '" . $pid . "'";//sql string command
          $result=mysql_query($sql);//execute SQL string command
          //result contains rows
          $rows = mysql_fetch_row($result)
          echo json_encode($rows["Processing Rate (ppm)"]); 
    }

}

?>

sr が設定されない理由はありますか?

私はベースから離れていますか?

また、$user と $pass を何に設定すればよいかわからないことも恥知らずに書き留めておきます。私はそれがどこにも説明されているのを見つけることができません

前もって感謝します!

編集:私は以下のほとんどの指示に従いましたが、今は実行時に

http://localhost/getRate.php?pid=A5843 

「データベースが選択されていません」と表示されます。また、元の MS Access ファイルにアクセスすることはできません (私のチーム メンバーの 1 人が持っています) が、入手したら、すべてのヘッダーを 1 つの単語のヘッダーにします。これは、Web プログラミング/データベース管理の最初の仕事なので、常に学んでいます。

4

3 に答える 3

4

DB クエリ コードが正しくありません:

    $sql = "SELECT 'Processing Rate (ppm)' FROM 'part parameters' WHERE 'Part Number' LIKE '" . $pid . "'";//sql string command

クエリ内のものを引用するために使用'すると、それらはフィールド/テーブル名ではなく文字列になります。したがって、クエリは構文的および論理的に間違っています。あなたのコードは単に成功を前提としており、mysql が吐き出すエラーをキャッチすることはありません。

クエリは次のようになります。

SELECT `Processing Rate (ppm)`
FROM `part parameters`
WHERE `Part Number` = '$pid'

フィールド/テーブル名でのバッククォート (`) の使用と'、$pid 値での一重引用符 () の使用に注意してください。

次に、次のようにクエリを実行します。

$result = mysql_query($sql) or die(mysql_error());

これが失敗すると、mysql が返すエラー メッセージが表示されます。

そして全体として、コードはSQL インジェクション攻撃に対して脆弱です。このコードを先に進める前に、よく読んでそれを防ぐ方法を学んでください。

于 2013-04-18T16:16:59.260 に答える