挿入

2009-03-29 13 views
0

Hyはすべて、ここで何が起こっているのか挿入

わからないの奇数MySQLの問題に、私はこの実行する場合:

$query = 'INSERT INTO users 
(`id`, `first_name`, `second_name`, `register_date`, `lastlogin_date`) 
VALUES 
("'. $user_id . '", "' . $first_name .'", "'. $second_name . '", "' . $date . '", "' . $date . ");'; 
$result = mysql_query($query); 

を私はノーリターンを得るませんが、私はこれに変更した場合、それは大丈夫です。

$query = 'INSERT INTO users (`id`, `first_name`, `second_name`, `register_date`, `lastlogin_date`) 
VALUES ("21021212", "Joe", "Bloggs", "20090202", "20090202");'; 
$result = mysql_query($query); 

ユーザID = BIGINT(20)

ファーストネーム= VARCHAR(30)

2番目の名前= VARCHAR(30)

日= INT(8)

まず私はそれはVARSの問題だと思ったが、彼らはまったく同じであり、まだ動作しません。

助けてください。

+0

$ queryを出力すると、何が入っていますか? –

答えて

4

「mysql_error()」の結果はどうなりますか?特に何かが動作していないように見える場合は、これを常に確認してください。

また、実際にどのように見えるかを確認するために$ queryをエコーアウトします。それは告げるかもしれない。クエリをエコーと@GoatRiderの通りmysql_error()をチェックすることに加え

+0

+1これは最高のアドバイスです、 "魚を釣る人を教える"の精神で –

0

  1. あなたが適切にあなたのデータをエスケープしていますか?本当に、あなたはPDOまたはADODbのようなラッパーのいくつかの種類を使用する必要があります - mysql_query()
6

mysql_real_escape_stringですべてのデータベースの入力をエスケープするのが習慣に取得を使用するときは、セミコロンを使用して、クエリを終了してはならないmysql_real_escape_string()

  • を参照してください。あなたがこれを行うに役立ちますが、ここにあなたがすることなく、それを行う可能性があります方法は次のとおりです。

    $query = sprintf("INSERT INTO users ". 
        "(id, first_name, second_name, register_date, lastlogin_date)". 
        "VALUES('%s','%s','%s','%s','%s')", 
        mysql_real_escape_string($user_id), 
        mysql_real_escape_string($first_name), 
        mysql_real_escape_string($second_name), 
        mysql_real_escape_string($date), 
        mysql_real_escape_string($date)); 
    
    $result = mysql_query($query); 
    

    ともmysql_error

    でエラーをチェック
    if (!$result) 
    { 
        echo "Error in $query: ".mysql_error(); 
    } 
    
  • 1

    おそらく$dateの値は"1111'); DELETE FROM users;"でしたか?

    真剣にですか?問題はそれがあなたのデータベースとやり取りする方法ではないということです。クエリでデータを渡すべきではありません。クエリとそのクエリのパラメータを指定し、クエリを実行するときに実際のパラメータ値を渡す必要があります。それ以外のものは非効率的で、安全でなく、あなたが持っているもののようなバグになりがちです。

    PDOを使用すると、パラメータ化されたクエリをサポートするものを使用すると、データベースプロパティを呼び出すため、この種の問題が解決されます。さらに安全性が高く、データベースの処理速度を向上させることができます。 $クエリ= 'ユーザ(idfirst_namesecond_nameregister_datelastlogin_date)VALUES(。INSERT INTO "'。$のUSER_ID。 ' ""'。$ FIRST_NAMEを。 ' ""'。$で

    $sth = $dbh->prepare("INSERT INTO users (`id`, `first_name`, `second_name`, `register_date`, `lastlogin_date`) VALUES (?,?,?,?,?)") 
    $sth->execute(array($user_id ,$first_name , $second_name , $date, $date)); 
    
    0

    2番目の名前。 '"、"'。$日付。 '"、"'。$日付。'')); は正しい日付形式を指定していますか?それが問題になる可能性がありますが、それ以外の場合は構文はすべて問題ありません