2012-02-29 17 views
1

PHPを2〜3日間だけ起動しました。どのように変数をデータベースに挿入すればいいですか?このエラーが発生した理由は何ですか?PHPをテーブルにデータを挿入

私はあなたが私にいくつかの本をお勧めすることができます場合は、このスクリプトを実行している場合は、その非常に良い

はあなたの助け

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\babak\register.php on line 21 

いただきありがとうございます

私はunderestand文字列をdidntのだと思うと完全に

をDBへの挿入します

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <title>register 
    </title> 
</head> 

<body> 
<?php 
mysql_connect('localhost', 'root', ''); 
mysql_select_db('babak'); 
?> 

thanx for your registering &nbsp;<?php echo $_POST["name"]; ?><br/> 
your email is <?php echo $_POST["E-MAIL"]; ?><br/> 
<?php 
    $sql ="INSERT INTO users(id,pass) VALUES ($_POST['id']','$_POST['pass']')"; 
?> 
</body> 
</html> 
+1

私はSQLインジェクションを嗅ぐ。それはかなりひどく悪臭を帯びます。 – ThiefMaster

答えて

0
$sql="INSERT INTO users(id,pass) VALUES ($_POST['id']','$_POST['pass']')"; 
               ^^   ^^

$sql="INSERT INTO users(id,pass) VALUES ('{$_POST['id']}', '{$_POST['pass']}')"; 

しかし、すでにあなたの質問に私のコメントで述べたように、あなたは、SQLインジェクションの世話をし、信頼できない入力をエスケープする必要があります

二重引用符で囲まれた文字列に配列の値を直接挿入する場合は、指定した引用符を使用できません。

$sql = "INSERT .... '$_POST[id]', '$_POST[pass]'"; 
$sql = "INSERT ... '{$_POST['id']}', '{$_POST['pass']}'"; 
+0

良い答えである間、あなたはSQLインジェクションを言及する必要があります。 –

0

二重引用符文字列に配列を埋め込むと単一引用符なしで{$foo['bar']}$foo[bar]を使用する必要があります。

$sql = "INSERT INTO users(id,pass) VALUES (
    '".mysql_real_escape_string($_POST['id'])."', 
    '".mysql_real_escape_string($_POST['pass'])."')"; 
+0

さらに、中かっこで囲むこともできます: '$ sql =" INSERT INTO users(id、pass)VALUES( '{$ _POST [' id ']}'、 '{$ _POST [' pass ']}') " ; ' –

+0

tanx私のfrieeeeend –

+0

それは正しい! – Dax

0

お客様のお問い合わせ(および実際の文字列)は無効です。また、悪意のあるユーザーがスクリプトを壊してデータベースにハックする可能性があるため、決してユーザー入力を直接使用することはありません。

$id$passはそれぞれ $_POST['id']$_POST['pass']のバージョンがエスケープされ
$sql = "INSERT INTO users(id,pass) VALUES ('$id','$pass')"; 

PHPのセキュリティに関するいくつかの良い本を読むことをお勧めします。

+0

hmm tanx私の友人は、セキュリティに関する書籍を教えていただけます –

+0

http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books - PHPカテゴリの最初の2つ。 –