2016-03-31 20 views
0

ウェブサイトから古いMySQLコマンドを使用する際に問題があります。なぜこのMySQLコマンドの仕事はありません

INSERT INTO 
     users(user_name, user_pass, user_email ,user_date, user_level) 
VALUES('" . mysql_real_escape_string($_POST['user_name']) . "', 
     '" . sha1($_POST['user_pass']) . "', 
     '" . mysql_real_escape_string($_POST['user_email']) . "', 
     NOW(), 
     0); 

このエラーが返されます。

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'user_name']) . "', 
     '" . sha1($_POST['user_pass']) . "', 
     '" . mys' at line 3 

ウェブサイトの記事は2010年5月からのものでしたので、それが機能しない理由が考えられます。ここにウェブサイト:http://code.tutsplus.com/tutorials/how-to-create-a-phpmysql-powered-forum-from-scratch--net-10188があります。これ以上の情報が必要な場合は、この質問を編集します。

+0

このチュートリアルのSQLでは何も問題はありません。実際のコードを正確に投稿する必要があります。このチュートリアルでは、PHPで変数を作成しています。もしあなたがdbに '$ _POST'変数を見たことがない著者と同じものを書いたのであれば、それらの値はクエリに連結されます。 – billynoah

+0

**警告**:独自のアクセスコントロールレイヤーを作成するのは簡単ではなく、間違った操作をする機会がたくさんあります。 [Laravel](http://laravel.com/)のような最新の[開発フレームワーク](http://codegeekz.com/best-php-frameworks-for-developers/)がある場合は、独自の認証システムを作成しないでください。強力な[認証システム](https://laravel.com/docs/5.2/authentication)が組み込まれています。絶対に[推奨されるセキュリティのベストプラクティス](http://www.phptherightway.com/#security)に従ってください。SHA1だけを適用してパスワードを保存しないでください。 – tadman

+0

**警告**:PHPを習得しているだけの方は、古い['mysql_query'](http://php.net/manual/en/function.mysql-query.php)インタフェースを学ばないでください。それはひどいので、PHP 7では削除されました。[PDOは学ぶのが難しくありません](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo- for database-access /)、[PHP The Right Way](http://www.phptherightway.com/)のようなガイドはベストプラクティスの説明に役立ちます。準備されたステートメントを使用しない限り、巨大なSQLインジェクションホールから間違いがあります。 – tadman

答えて

-1

各値の後に単一引用符をエスケープする必要があります(それぞれPOST [))。

INSERT INTO 
     users(user_name, user_pass, user_email ,user_date, user_level) 
VALUES('" . mysql_real_escape_string($_POST[''user_name'']) . "', 
     '" . sha1($_POST[''user_pass'']) . "', 
     '" . mysql_real_escape_string($_POST[''user_email'']) . "', 
     NOW(), 
     0); 
+0

'$ _POST ['' user_name '']' ??あなたはそれについて確信しているのですか、これはタイプミスですか? – billynoah

+0

@billynoah私はあなたと一緒です。これはまったく意味がありません。 – tadman

+0

@tadmanそれが動作します。 – SkrillexNukehulk

関連する問題