首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >没有将某些值插入MySQL数据库

没有将某些值插入MySQL数据库
EN

Stack Overflow用户
提问于 2012-06-30 13:49:35
回答 6查看 2.5K关注 0票数 1

我有一个HTML表单,它向以下PHP文件提交值,将它们插入到MySQL数据库中:

代码语言:javascript
运行
复制
<?php
  $con = mysql_connect("*","*","*");
  if (!$con)
    {
    die('Could not connect: ' . mysql_error());
    }

  mysql_select_db("*", $con);

  $sql="INSERT INTO scores (hometeam, awayteam, result)
  VALUES
  ('" . mysql_real_escape_string($_POST['hometeam']) . "',
   '" . mysql_real_escape_string($_POST['awayteam']) . "',
   '" . mysql_real_escape_string($_POST['result']) . "')";

  if (!mysql_query($sql,$con))
    {
    die('Error: ' . mysql_error());
    }
  echo "1 record added";

  mysql_close($con);
?>

有时HTML表单中的输入字段将为空白,在这种情况下,我不希望任何内容插入到数据库中。我希望这个值保持为空。当我像这样填写我的表格时:

主队:蓝队

客场:空白

结果: Won

在我的数据库中插入了以下内容:

主队:蓝队

客队:“”

结果: Won

我想插入/不插入的是:

主队:蓝队

客队:零

结果: Won

我已经找了好几个小时来找解决办法了。有人能帮忙吗?谢谢。

EN

回答 6

Stack Overflow用户

发布于 2012-06-30 14:04:36

好的,它只会插入最后的值,因为您正在执行$sql,而$sql的最后一个值是"INSERT INTO scores (result) VALUES ('$_POST[result]')";,您要通过放置相同的变量名来覆盖前面的值。

此外,如果字段有时是空的,(!empty($_POST[hometeam]))将删除!空。

票数 2
EN

Stack Overflow用户

发布于 2012-06-30 14:05:15

每次都要覆盖SQL语句。表示您的“结果”字段不是空白,而是将SQL语句设置为:

代码语言:javascript
运行
复制
"INSERT INTO scores (result) VALUES ('$_POST[result]')"

这是唯一正在执行的语句--您的其他值将被忽略,因为它们不是该语句的一部分。

您需要做的是首先设置变量:

代码语言:javascript
运行
复制
$hometeam = isset($_POST['hometeam']) ? $_POST['hometeam'] : NULL;
$awayteam = isset($_POST['awayteam']) ? $_POST['awayteam'] : NULL;
$result = isset($_POST['result']) ? $_POST['result'] : NULL;

然后,您可以进行数据库交互:

代码语言:javascript
运行
复制
$sql = "INSERT INTO scores hometeam, awayteam, result VALUES $hometeam, $awayteam, $result";
if (!mysql_query($sql,$con))
{
    die('Error: ' . mysql_error());
}
echo "1 record added";

mysql_close($con);

我应该说,我没有在这方面包含任何安全性--您应该查看PDO或准备好的语句,以确保数据库不对SQL注入开放。

希望这能有所帮助!

票数 2
EN

Stack Overflow用户

发布于 2012-06-30 14:03:02

我认为在html表单中声明输入字段的名称有一些问题。请确保$_POSThometeam必须是表单中相同的输入名称。

例句:以你的形式

代码语言:javascript
运行
复制
<input type="text" name="hometeam" value="" />

在PHP中

代码语言:javascript
运行
复制
 if (!empty($_POST[hometeam])) {
  $sql="INSERT INTO scores (hometeam) VALUES ('$_POST[hometeam]')";
 } 

此外,在将其添加到数据库之前,请在post值中使用附加斜杠或mysql_real_escape_string。

请查看下面的链接:

http://php.net/manual/en/function.addslashes.php

http://php.net/manual/en/function.mysql-real-escape-string.php

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11274561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档