【问题标题】:HTML form - wont update Mysql database using PHPHTML 表单 - 不会使用 PHP 更新 Mysql 数据库
【发布时间】:2012-04-10 06:41:36
【问题描述】:

这让我很困惑.. 我现在很头疼!我已经学习 php 一个月了,这是我希望在 4 周前学习的东西:

我收到警告未定义索引并且数据库正在更新日期为 0000-00-00,然后在另一列中没有任何内容,我将查询转换为回显以查看发生了什么但似乎没有分配任何内容到从表单发送的变量!

代码: (简体)

calender.php

<form name="slots" action="updatecalender.php" method="post">
Day: <input type="text" name="dayofmonth" />
<select name="month">
    <option value="1">January</option>
    <option value="2">February</option>
    <option value="3">March</option>
    <option value="4">April</option>
    <option value="5">May</option>
    <option value="6">June</option>
    <option value="7">July</option>
    <option value="8">August</option>
    <option value="9">September</option>
    <option value="10">October</option>
    <option value="11">November</option>
    <option value="12">December</option>
</select>
<select name="year">
    <option value="2012">2012</option>
    <option value="2013">2013</option>
    <option value="2014">2014</option>
    <option value="2015">2015</option>
    <option value="2016">2016</option>
    <option value="2017">2017</option>
    <option value="2018">2018</option>
    <option value="2019">2019</option>
    <option value="2020">2020</option>
    <option value="2021">2021</option>
    <option value="2022">2022</option>
    <option value="2023">2023</option>
</select><br /><br />
Slots Available:
<input type="text" name="noslots" /><br />
<input type="submit" value=" - Go - " />
</form>

updatecalender.php

<?php
//connect to database

require "dbconn.php";

$dayofmonth = $_GET['dayofmonth'];
$month = $_GET['month'];
$year = $_GET['year'];
$noslots = $_GET['noslots'];

$query = INSERT INTO calender VALUES ('".$year."-".$month."-".$dayofmonth."','".$noslots."')";

$results = mysql_query($query)
            or die(mysql_error());

header('Location:calender.php');

    ?>

我是一个初学者,所以我不打算让它安全......只是让它工作!

非常感谢您的任何建议和帮助!

【问题讨论】:

  • 这真的是您使用的代码吗?以$query = 开头的行看起来至少有一个解析器错误。此外,生成的查询是什么样的?你说你附和了,可以分享一下吗?
  • 您的表单使用 POST,您的 PHP 使用 GET。使用 $_POST
  • 哦,看。未经消毒的输入。 Little Bobby Tables 会很开心。地球上是否有真正担心 SQL 注入的 PHP/SQL 教程? “我是初学者,所以我不打算让它变得安全”——那又怎样?理智的 API 可以免费提供安全性。使用 PDO。不要使用 mysqli。
  • @mdi:看起来你先抓住了它。您应该将其发布为答案。
  • 对不起,我的意思是我回应了它,所以我可以查看变量是否已被分配......关于查询,我错过了我复制到这里的代码“虽然我还在学习(观察)

标签: php mysql html css


【解决方案1】:

您的表单使用 POST,您的 PHP 使用 GET。使用 $_POST

(最初在cmets中提出)

【讨论】:

    【解决方案2】:

    这可能对你有用。

    <?php 
        //connect to database 
    
        require "dbconn.php";
    
        $dayofmonth = $_POST['dayofmonth']; 
        $month = $_POST['month']; 
        $year = $_POST['year']; 
        $noslots = $_POST['noslots']; 
    
        $results = mysql_query ("INSERT INTO calender VALUES ('".$year."-".$month."-".$dayofmonth."','".$noslots."')");
    
        header('Location:calender.php'); 
    
        ?> 
    

    【讨论】:

      【解决方案3】:

      首先在您的 php 代码中使用 $_POST,即:

      $dayofmonth = $_POST['dayofmonth'];
      $month = $_POST['month'];
      $year = $_POST['year'];
      $noslots = $_POST['noslots'];
      

      另外,考虑学习PDO。您的代码并不安全。 PDO 将帮助清理您的输入并帮助防止诸如 SQL 注入之类的事情

      【讨论】: