私はphpを初めて使用しており、これをデバッグする方法がわかりません。php内でjsonを解釈してmysqlに渡す際に問題が発生しました
jsonをPHPページに渡してから、そのデータをmySQLに送信しようとしています。
私は、PHPファイル内のデータを解釈したり、PHPページに情報を渡したりする際に問題があると思います。 phpファイルを開くと、データベースに適切にアクセスしていることを示します。ここで
は私のjavascriptのコードです:
var request = new XMLHttpRequest();
request.open('POST', 'http://website/saveF.php', true);
request.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
request.send(bInfo);
これは、情報を取得し、その後、MySQLデータベースに追加するPHPファイルにそれを渡しています。
は、ここに私のPHPコードです:
これはJSONをデコードして、配列内の各エントリの上にitteratingされます。次に、Webサイトがリストされているかどうかを質問し、適切なテーブルに格納します。サニタイズは、配列要素のいずれかに失敗した場合
$input = filter_var($postThings, FILTER_SANITIZE_STRING);
falseを返します:
//as long as the connection is good then we keep it live.
include_once "head.php";
if ($conn->connect_error) {
die("connection failed: " . $conn->connect_error);
}
//gettting the information from the front end (index.html)
$inputJSON = file_get_contents('php://input');
//decode all the previously encoded information
$postThings = json_decode($inputJSON, TRUE);
$input = filter_var($postThings, FILTER_SANITIZE_STRING);
//create a variable the is the total length of our array
$totalNum = count($input);
//arrays start at 0
$i = 0;
//you can see where this is going. We have a while loop that will continue as long as i is less than totalnum. Ask me why i didn't use a for loop.... I don't have an answer.
while($i < $totalNum){
$var0 = $input[$i][0];
$var1 = $input[$i][1];
$var2 = $input[$i][2];
$var3 = $input[$i][3];
$var4 = $input[$i][4];
$var5 = $input[$i][5];
$var6 = $input[$i][6];
if($var1 == "Not Listed") {
$sql = "INSERT INTO missing(cName, website, rating, phone, id, address, placeType) VALUES ('$var0', '$var1', '$var2', '$var3', '$var4', '$var5', '$var6')";
}else{
//here we set the information into the database.
$sql = "INSERT INTO companies(cName, website, rating, phone, id, address, placeType) VALUES ('$var0', '$var1', '$var2', '$var3', '$var4', '$var5', '$var6')";
}
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$i++;
}
なぜ '$ _POST'配列を使用しないのですか? – Luca
あなたのコードは[** SQLインジェクション**](https://en.wikipedia.org/wiki/SQL_injection)攻撃に対して脆弱です。あなたは[** mysqli **](https://secure.php.net/manual/en/mysqli.prepare.php)または[** PDO **](https ://secure.php.net/manual/en/pdo.prepared-statements.php)ドライバ。 [**この記事**](https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)には、いくつかの良い例があります。 –
@ルーカ私がどこから学んだのか分からないので、私は$ _POST配列を使いませんでした。今のところtphp:// inputが動作しているはずです。 – krizpers