2016-03-27 6 views
-1

私のコードは以下です。提出されたデータではなく、私はphpMyAdminの中で見たときにMySQLデータベースに挿入誰でもこのコードで何が間違っているのかを教えてもらえますか?PHPを提出した後にmysqlデータベースにデータが挿入されていないか、エラーが出されていないか?

<?php 
$dbhost = 'localhost'; 
$dbuser = 'Krishna'; 
$dbpass = 'xxxx'; 
$conn = mysqli_connect($dbhost, $dbuser, $dbpass); 
session_start(); 
if (isset($_POST['submit'])){ 
    if(! $conn) { 
     die('Could not connect: ' . mysqli_error()); 
    } 
} 
mysqli_select_db($conn, "krishna"); 
$sql = "INSERT INTO contact_us (name, email, sub, mess) 
    VALUES ('$_POST[name]','$_POST[email]','$_POST[sub]','$_POST[mess]')"; 
if(! $sql) { 
    die('Error: ' . mysqli_error()); 
} 
echo "1 Record Added to Table\n"; 
echo "<a href='contactForm.html'>Back to main page</a>"; 
mysqli_close($conn); 
?> 
+2

必読:[どのように私はPHPでSQLインジェクションを防ぐことができますか?](https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in- php) –

+0

symfonyとlaravelをPHPでコーディングする方法を少し見てみましょう。これは、PHPが今までに発明されたときの苦しい教訓をすべて習得することなく、問題の解決策を構築するのに役立つフレームワークを使用しています。 –

答えて

2

まず、私はあなたが私も私が最初に学んが、その後たんでしたSQLを使用する方法を学習しようとする試みでこれを行うことができますと言ってみましょう実現...

このメソッドはSQLインジェクション攻撃の対象であり、使用しないでください。ユーザーの入力を最初に害さずに直接入力することは、セキュリティ上の脆弱性を引き起こす可能性のある重大な間違いです。

これで、データベースに入力するためのSQLを準備するPDO文のようなツールが用意されました。ユーザーから何かを得るときにあなたの声明を準備する同様のツールを使用することを検討してください。

ユーザーは信頼されません。下のコードでは、変数$ idをとり、有害なものをすべて削除します。

<?php 
$stmt = $db->prepare("SELECT * FROM table WHERE id=? AND name=?"); 
$stmt->bindValue(1, $id, PDO::PARAM_INT); 
$stmt->bindValue(2, $name, PDO::PARAM_STR); 
$stmt->execute(); 
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 
?> 

上記のコードのソースとPDOのチュートリアルについては、このリンクを参照してください。しかしそこにはおそらくもっと良いチュートリアルがあります。

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers