【问题标题】:PHP doesn't get HTML Form valuesPHP 不获取 HTML 表单值
【发布时间】:2015-03-20 08:22:22
【问题描述】:

我正在使用 HTML / PHP 进行学校项目。现在我遇到了问题,我们的 PHP 文件 /bid.php 没有检索我们的 HTML 表单的输入数据。 提交表单时,我们收到以下错误:

解析错误:语法错误,第 4 行 D:\School\IN\USBWebserver v8.5\USBWebserver v8.5\8.5\root\bid.php 中的意外 T_VARIABLE

提前感谢您的帮助!

编辑:

我已经编辑了我从各种来源找到的代码。它目前不响应任何错误。让我想知道问题是什么,因为插入的值不会出现在我的数据库中。 面纱.php

<form method="post" action="/bid.php">
<input type="text" name="bod" placeholder="bod">
<input type="text" name="naam" placeholder="naam">
<input type="text" name="item" placeholder="Item Nummer">
<input type="submit">
</form>
<?php
$bod = $_POST['bod'];
$naam = $_POST['naam'];
$item = $_POST['item'];
?>

出价.php

<?php
$bid = isset($_POST['bod']) ? $_POST['bod'] : false;
$name = isset($_POST['naam']) ? $_POST['naam'] : false;
$item = isset($_POST['item']) ? $_POST['item'] : false;

$connect = mysql_connect('localhost', 'root', 'usbw'); 
mysql_select_db ('veiling'); 
$sql = "INSERT into personeel (name, bod, item) 
VALUES ('$name', '$bid', '$item')"; 
$res = mysql_query($sql); 
mysql_close ($connect); ?>

下面的旧代码

面纱html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<form method="get" action="/bid.php">
<input type="text" name="bod" placeholder="bod">
<input type="text" name="naam" placeholder="naam">
<input type="text" name="item" placeholder="Item Nummer">
<input type="submit">
</form>

</body>
</html>

出价 php

<?php
$conn = mysql_connect(localhost, root, usbw);
mysql_select_db ('veiling')
$bid = $_GET['bod']
$name = $_GET['naam']
$item = $_GET['item'] 
$maxbid = mysql_query(SELECT MAX(bod) FROM veiling WHERE item=1)
if $bid =< $maxbid then
exit
else
INSERT INTO veiling (bod, naam, item)
VALUES ($bid, $name, $item)
// SQL
echo('Gefeliciteerd '$name', het bod op item ' $item ' van €' $bid 'is succesvol toegevoegd')

?>

还有我们的数据库

CREATE TABLE IF NOT EXISTS `veiling` (
  `id` int(3) NOT NULL AUTO_INCREMENT,
  `name` varchar(25) NOT NULL,
  `bod` varchar(20) NOT NULL,
  `item` int(3) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

【问题讨论】:

  • 学php,这里的错误很简单,一看就发现多个简单的语法错误。
  • 这正是我在这里想要做的。无论如何,我只是寻求一点帮助。
  • 尝试添加一些“;”每一行,但不仅如此,抱歉你需要这么多帮助
  • @DemiënDrost 你不是来学习 php,而是通过教程来做到这一点,什么不是,你的代码问题很简单,让我觉得你没有做太多事先研究。
  • 这就像一个 SQL 注入盛会!停止使用 mysql_ 函数,因为它们已被弃用,并开始使用 mysqli_PDO 代替..

标签: php html sql database post


【解决方案1】:

您在行尾缺少 ;。

<?php
$conn = mysql_connect(localhost, root, usbw);
mysql_select_db ('veiling');
$bid = $_GET['bod'];
$name = $_GET['naam'];
$item = $_GET['item'];
$maxbid = mysql_query("SELECT MAX(bod) FROM veiling WHERE item=1");
$maxbid = mysql_fetch_array($maxbid);
if( $bid =< $maxbid[0] )
{
    die();
}
else
{
    mysql_query("INSERT INTO veiling (bod, naam, item) VALUES ($bid, $name, $item)");
// You should escape the parameters with mysql_real_escape_string.
// SQL
echo 'Gefeliciteerd '$name', het bod op item ' $item ' van €' $bid 'is succesvol toegevoegd';
}
?>

这段代码应该可以工作。

您还应该注意,从 PHP 5.5 开始不推荐使用 mysql_* 函数。我建议你改用PDO

【讨论】:

    【解决方案2】:

    您的许多语句都遗漏了所需的分号。我已经编辑了你的代码:

    <?php
    $conn = mysql_connect(localhost, root, usbw);
    mysql_select_db ('veiling');
    $bid = $_GET['bod'];
    $name = $_GET['naam'];
    $item = $_GET['item'];
    $maxbid = mysql_query("SELECT MAX(bod) FROM veiling WHERE item=1");
    $maxbid = mysql_fetch_array($maxbid);
    if( $bid <= $maxbid[0] ) //notice the <= not =<
    {
       die();
    }
    else
    {  //note the single quotes around $name and $item
       mysql_query("INSERT INTO veiling (bod, naam, item) VALUES ($bid, '$name', '$item')");
    
    //note the dot(.) concatenating your string with the variables
    echo 'Gefeliciteerd '. $name. ', het bod op item '. $item. ' van €'. $bid. 'is succesvol toegevoegd';
    }
    ?>
    

    这段代码应该可以工作

    【讨论】:

      【解决方案3】:

      你错过了从

      开始的分号
      mysql_select_db ('veiling')
      

      【讨论】:

      • 这只是初学者。其他几个语法错误,例如 if 块、隐式类型的 sql 查询...
      • 好吧@Daan,我的回答解决了他的直接问题。他陈述了一条错误消息,从技术上讲,这是正确的答案。为什么要投反对票?
      • 从技术上讲,这一切都错了,看看这一行:if $bid =&lt; $maxbid then
      【解决方案4】:

      您的代码中的错误太多我已经更改了很少尝试这个 改变,

      <?php
      $conn = mysql_connect(localhost, root, usbw);
      mysql_select_db ('veiling')
      $bid = $_GET['bod']
      $name = $_GET['naam']
      $item = $_GET['item'] 
      $maxbid = mysql_query(SELECT MAX(bod) FROM veiling WHERE item=1)
      if $bid =< $maxbid then
      exit
      else
      INSERT INTO veiling (bod, naam, item)
      VALUES ($bid, $name, $item)
      // SQL
      echo('Gefeliciteerd '$name', het bod op item ' $item ' van €' $bid 'is succesvol toegevoegd')
      
      ?>
      

      像这样,

      <?php
      $conn = mysql_connect(localhost, root, usbw);
      mysql_select_db ('veiling');
      $bid = $_GET['bod'];
      $name = $_GET['naam'];
      $item = $_GET['item'] ;
      $maxbid = mysql_query(SELECT MAX(bod) FROM veiling WHERE item=1);
      if ($bid =< $maxbid) 
      exit
      else
      INSERT INTO veiling (bod, naam, item)
      VALUES ($bid, $name, $item)
      // SQL
      echo('Gefeliciteerd '$name', het bod op item ' $item ' van €' $bid 'is succesvol toegevoegd');
      
      ?>
      

      【讨论】:

      • 你的改变没有多大帮助。
      • @Daan 请向他指出任何事情,以便他理解他的错误,不要简单地投票给所有人......
      • 你应该给出比这个更完整的答案。
      • 非常感谢您的帮助 @ayyanar-g 我的错误现在已转移到第 11 行“INSERT INTO veiling (bod, naam, item);”
      • 将该行更改为 mysql_query("INSERT INTO veiling (bod, naam, item) VALUES ('.$bid.', '.$name.', '.$item.')") ;
      猜你喜欢
      • 2012-07-19
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 2011-09-24
      • 2014-02-07
      相关资源
      最近更新 更多