【问题标题】:Trying to write to a MySQL database with a PHP form尝试使用 PHP 表单写入 MySQL 数据库
【发布时间】:2011-03-19 22:38:30
【问题描述】:

我正在尝试使用 PHP 使用 HTML 表单对数据库进行简单的写入。

我已经在数据库中运行了 SQL 查询,它运行良好。但是,使用表单不起作用。我不确定为什么。有什么帮助吗?用户名/密码名/数据库名都正确。

<?php
if(isset($_POST['submit']))
{

$con = mysql_connect("localhost","delives0_ideas","ideas");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("delives0_ideas", $con);

mysql_query("INSERT INTO data (firstName, lastName, email, idea) VALUES ('$_POST['firstName']','$_POST['lastName']', '$_POST['email']', '$_POST['idea']')");

//also email it to us besides writing it into the database

mysql_close($con);
?>

<form method="post">
<strong>First name:</strong> <input type="text" name="firstName"/>
<br/>
<strong>Last name:</strong> <input type="text" name="lastName"/>
<br/>
<strong>Email:</strong> <input type="text" name="email"/>  #####Put a javascript checker for valid emails, like name@site.com format
<br/>
<br/>
<strong>Idea:</strong>
<br/>
<textarea rows="10" cols="30" name="idea"> 
Hit us with your best shot.
</textarea> 
<br/>
<input name="submit" type="submit" value="Submit"/>
</form>

【问题讨论】:

  • mysql_query 返回真还是假?另外,这可能是权限问题吗?
  • 如果您不使用 PDO,请至少使用 php.net/manual/en/function.mysql-real-escape-string.php 为您自己好 :)
  • 叹息bobby-tables.com
  • 我不确定它是返回真还是假,但 SQL 部分工作正常,正如我所说。我给了有问题的用户所有可能的权限,所以它不应该是这样的问题。
  • 我已经清理了输入,非常感谢,忘记了。我已经很多年没有这样做了。

标签: php mysql html forms


【解决方案1】:

您忘记了表单标记中的“action = nameofyourpage.php”。我会在你的查询末尾添加一个“or die (mysql_error())”来检查请求的语法。

【讨论】:

  • 成功了,谢谢。除了将它们放入数据库之外,我将如何向某个包含从表单中提取的值的电子邮件地址发送电子邮件?
【解决方案2】:

您的脚本中有一些错误 - 请检查以下内容

http://pastie.org/1056569

<?php
if(isset($_POST['submit']))
{
   $con = mysql_connect("localhost","delives0_ideas","ideas");
   if (!$con){
     die('Could not connect: ' . mysql_error());
   }

   mysql_select_db("delives0_ideas", $con);

   $sqlCmd = sprintf("INSERT INTO data (firstName, lastName, email, idea) 
     VALUES ('%s','%s','%s','%s')", 
      mysql_real_escape_string($_POST["firstName"]),
      mysql_real_escape_string($_POST["lastName"]),
      mysql_real_escape_string($_POST["email"]),
      mysql_real_escape_string($_POST["idea"]));

   mysql_query($sqlCmd);
   mysql_close($con);
 }
 ?>

 <form method="post">
  <strong>First name:</strong> <input type="text" name="firstName"/><br/>
  <strong>Last name:</strong> <input type="text" name="lastName"/><br/>
  <strong>Email:</strong> <input type="text" name="email"/> 
  <strong>Idea:</strong><br/>
  <textarea rows="10" cols="30" name="idea">Hit us with your best shot.</textarea><br/>
  <input name="submit" type="submit" value="Submit"/>
 </form>

【讨论】:

  • 请在此处发布代码 sn-ps。如果外部网站消失,您的回答将毫无意义......
【解决方案3】:

您已经知道为什么它不起作用的问题的答案,但请在将此代码投入生产之前查看此article 关于 SQL 注入攻击。

【讨论】:

    【解决方案4】:

    你有错误

    mysql_query("INSERT INTO data (firstName, lastName, email, idea) VALUES
    ('$_POST['firstName']','$_POST['lastName']', '$_POST['email']', '$_POST['idea']')");
    

    Error = '$_POST['firstName']' you have chatter ' 在帖子字段中

    你可以改变

     $firstname = $_POST['firstName'];
     $lastname = $_POST['lastName'];
     $email = $_POST['email'];
     $idea = $_POST['idea'];
    
    mysql_query("INSERT INTO data (firstName, lastName, email, idea) VALUES ('{$firstname}','{$lastname}', '{$email}', '{$idea}')");
    

    或者用mysql查询

    mysql_query("INSERT INTO data SET firstName='{$firstname}', lastName='{$lastname}',
    email='{$email}', idea='{$idea}'");
    

    【讨论】:

      猜你喜欢
      • 2011-12-04
      • 2016-01-13
      • 1970-01-01
      • 2014-12-24
      • 1970-01-01
      • 2015-09-28
      • 1970-01-01
      • 2016-08-21
      • 1970-01-01
      相关资源
      最近更新 更多