2017-08-09 8 views
0

私はJQueryを初めて使用しており、プロジェクトに取り組んでいます。このプロジェクトは何もするつもりはない、それは概念証明で、私は学ぶことができる。今のところ私は3つのPHPファイルを持っています。一つはローカルmySQL DBに接続する 'connection.php'です。もう一つは、 'save_score.php'と呼ばれ、値を自分のDBに保存します。最後に、私はいくつかの値を作成し、JQueryを使用して私のDBにそれらを挿入するために 'save_score.php'に送信する 'test.php'ファイルを持っています。JQueryを使用して値をmySQLに挿入する

私が持っている問題は、 'connection.php'がうまく動作することです。私はPHPでINSERT INTOステートメントをハードコーディングし、それを挿入するために私のDBにそのクエリを送信することができます。したがって、接続には何も問題はありません。私は、2つのecho文を使って、JQueryが実際に値を 'save_score.php'に送信しているかどうか、そしてecho文が私のテスト値を返すかどうかをテストしました: 'Jeff'と '10'。 。私のDBに値、クエリを送信するために本質的にそう

、私はトリックを行う必要があります「$ストア」に入れている文を、動作しますが、そうではありませんし、私はその理由を知らない。

「save_scoreを.PHP ':

<?php 
    include 'connection.php'; 

    $name  = $_POST['name']; 
    $score = $_POST['score']; 

    echo $name; 
    echo $score; 

    $store = "INSERT INTO `galleryscores` (`player_name`, `player_score`) VALUES ($name, $score)"; 

    $mysqli->query($store); 

    echo "done"; 
?> 

'connection.php':

<?php 
    $servername = "localhost"; 
    $username = "root"; 
    $password = ""; 
    $dbname = "cs301"; 

    // Create connection 
    $mysqli = new mysqli($servername, $username, $password, $dbname); 
    // Check connection 
    if ($mysqli->connect_error) { 
    die("Connection failed: " . $mysqli->connect_error); 
} 

「test.phpを」:

<html> 

<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 

    <script type="text/javascript"> 
    var you = 's'; 
    var you_score = 10; 

    $.post("save_score.php", { 
     name: you, 
     score: you_score 
     }) 
     .done(function(data) { 
     alert("Data Loaded: " + data); 
     }); 
    </script> 
</head> 

<body> 
</body> 

</html> 
+0

SQLをまだ使用していると結論づけるために変数を使用した後に '$ store'をエコーし​​ましたか? – Matt

+0

私はちょうどして、それは私に正しいクエリを返します:https://gyazo.com/a22aeb1dbe5e9cdfa5b16a88ecc9a6c2 –

+1

SQLはそれが更新されていないとそれを見るためにエラー処理がない理由ですエラーです。文字列の値(S)を一重引用符で囲む必要があります。 mysqliやPDOを研究し、準備ができたら、準備が整った文章を開いて攻撃を仕掛けます。 – Matt

答えて

0

することは、我々はそれであるが、これはPDO

$dbh = new PDO('mysql:dbname=cs301;host=localhost', $username, $password); 

$stmt = $dbh->prepare('INSERT INTO `galleryscores` (`player_name`, `player_score`) VALUES (:player_name, :player_score)'); 

$stmt->execute(array('player_name' => $_POST['name'], 'player_score' => $_POST['score'])); 
0

が挿入される値のためには、この

$store = "INSERT INTO `galleryscores` (`player_name`, `player_score`) VALUES ('".$name."', '".$score."')"; 

にあなたの挿入クエリを変更してみてください、彼らは、クエリに文字列として渡される必要があります。最終的には、実行のためにStringを渡しています。

EDITED Mattが言ったように、SQLインジェクションを常に試みてください。それを行うする方法を示しています。ここでは

$query = $mysqli->prepare("INSERT INTO `galleryscores` (`player_name`, `player_score`) VALUES (?, ?)"); 
$query->bind_param("si", $name, $score);// 's' represents the corresponding variable type is String 
$query->excecute(); 

bind_param documentation

+0

問題を解決するには十分ですが、準備されたステートメントには常にMysqli/PDOを使用するようにユーザーに指示してください。オープンなSQLインジェクション! – Matt

+0

@Mattあなたはどういう意味ですか? –

+0

@マット確かに。 – Aman

0

で行われるべき方法です。 MySQLi:Dでエラー処理を行う方法

$mysqli = new mysqli($host, $user, $pass, $db); 

if($mysqli->connect_error) 
    die('Connect Error (' . $mysqli->connect_errno . ') '. $mysqli->connect_error); 

if ($stmt = $mysqli->prepare("INSERT INTO `galleryscores` (`player_name`, `player_score`) VALUES (?, ?)")) 
{ 
    // Bind the values in order to the ?'s or log error 
    // Assuming Name is a string and score is always an int 
    if(!$stmt->bind_param("si", $name, $score)) 
    { 
     die('bind_param() failed: ' . htmlspecialchars($stmt->error)); 
    } 

    // Execute the completed sql command or log error 
    if (!$stmt->execute()) 
    { 
     die('execute() failed: ' . htmlspecialchars($stmt->error)); 
    } 

    $stmt->close(); // Close the database connection 
} 
else 
{ 
    die('prepare() failed: ' . htmlspecialchars($mysqli->error)); 
} 
+0

あなたは最高です!私は戻って、これを見て自分のコードを改善しよう! –

関連する問題