-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

由于您将字段设置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 回答
1

使用“'”表示非数字

$sql = "UPDATE users SET photo = '".$m_fname."' WHERE pin = '".$_SESSION['pin']."';";
于 2012-11-03T11:02:47.790 回答
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 回答