0

みなさん、

ここで何が起こっているのかわかりませんが、これを実行すると:

$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)

最初は変数の問題だと思っていましたが、それらはまったく同じで、まだ機能しません。

どんな助けでも感謝します。

4

5 に答える 5

6

mysql_real_escape_stringを使用してすべてのデータベース入力をエスケープする習慣を身につけてください。実際には、これを行うためにPDOADODbなどの何らかのラッパーを使用する必要がありますが、これを使用せずに行う方法は次のとおりです。

$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();
 }
于 2009-03-29T15:16:38.327 に答える
4

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

また、実際にどのように見えるかを確認するために、$query をエコーアウトします。それは言うことができます。

于 2009-03-29T15:08:39.440 に答える
1

多分の値は$dateでした"1111'); DELETE FROM users;"か?

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

PDOなど、パラメーター化されたクエリをサポートするものを使用すると、データベース プロパティを呼び出しているため、この種の問題がなくなることがわかります。また、はるかに安全で、データベースを高速化できます。

$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 ));
于 2009-03-29T15:25:04.063 に答える
0

in $query = 'INSERT INTO users ( id, first_name, second_name, register_date, lastlogin_date) VALUES ("' . $user_id . '", "' . $first_name . '", "' . $second_name . '", "' . $date . ' ", "' . $date . '"); 正しい日付形式を指定していますか?? それが問題かもしれません。それ以外の場合、構文はすべて問題ありません。

于 2009-03-29T16:19:02.577 に答える
0

mysql_error()@GoatRiderが示唆するように、クエリをエコーし​​てチェックすることに加えて:

  1. データを適切にエスケープしていますか? 見るmysql_real_escape_string()
  2. を使用するときは、クエリをセミコロンで終わらせないでくださいmysql_query()
于 2009-03-29T15:15:51.777 に答える