-1

現在他の値を持つデータベース テーブルの行に値を追加しようとしています。テーブル内の 1 つのフィールドだけに影響を与えたい。ここに私がやっていることがあります:

$sql = "UPDATE users SET photo = ".$m_fname." WHERE pin = ".$_SESSION['pin'].";";

これを行う正しい方法は何ですか?

ここにもう少しあります:

  $m_fname = mysql_real_escape_string($dest_filename);
  $sql = "UPDATE users SET photo = ".$m_fname." WHERE pin = ".$_SESSION['pin'].";";
  $res = @mysql_query($sql);
  if (!$res) {
    $errors[] = "Could not run query.";
    break;
  }

他の誰かが反対票を投じる前に.. mysqli を使用する必要があることは承知しています。古い関数を使用して気分を害した場合は申し訳ありません。

4

4 に答える 4

2

これは別の実装であり、適切なデータサニテーションの方法が含まれています。

$dbSession = new PDO('mysql:host=***;dbname=***', '***', '***');

$updateQuery = $dbSession->prepare('
  UPDATE
    `users`
  SET
    `photo` = :photo
  WHERE
    `pin` = :pin');

$updateQuery->bindParam(':photo', $m_fname,         PDO::PARAM_STR);
$updateQuery->bindParam(':pin',   $_SESSION['pin'], PDO::PARAM_INT); // or 'PARAM_STR'
$updateQuery->execute();

利用可能なその他の機能については、ドキュメントを参照してください。

于 2012-11-03T10:41:43.007 に答える
1

数字以外の場合は「'」を使用

$sql = "UPDATE users SET photo = '".$m_fname."' WHERE pin = '".$_SESSION['pin']."';";
于 2012-11-03T11:02:47.790 に答える
1

フィールドphotoを文字列値に設定しているため、単一引用符の使用を検討してください

$sql = "
  UPDATE `users`
  SET `photo` = '" . $m_fname . "'
  WHERE `pin` = " . $_SESSION['pin']; // Not clear what pin is (string or int)

あなたが直面している問題は何ですか?PINフィールドが主一意キーであり、それphotoが varcharである場合、コードは問題ないようです

于 2012-11-03T10:26:12.640 に答える
0
$m_fname = mysql_real_escape_string($dest_filename);
$sql = "UPDATE users SET photo = '{$m_fname}' WHERE pin = '{$_SESSION['pin']}';";
$res = @mysql_query($sql);
if (!$res) {
  $errors[] = "Could not run query.";
  break;
}
于 2012-11-03T10:25:13.487 に答える