【问题标题】:PHPStorm Form handling: PHP variable not echoing, nor posting to sqlPHPStorm 表单处理:PHP 变量不回显,也不发布到 sql
【发布时间】:2017-03-19 20:50:40
【问题描述】:

我有一个带有五个输入的 html 表单,命名为标题、发布日期、内容、标签和提交。我想将输入存储在 php 文件中的变量中,然后将它们发布到 mysql 数据库。我正在使用 PHPstorm,当我将鼠标悬停在 $_POST 上时,它说参考错误: $_POST 未定义。如何修复此参考错误?这就是它不提交到数据库的原因吗?

我的html表单:

<div class="section" id="home">
        <form action="insert.php" method="post">
            <fieldset>
                <legend>Title</legend>
                <input id="title" name="title" placeholder="Title" type="text"/>
                <input id="dateposted" type="text" placeholder="mm-dd-yyyy" name="dateposted"/>
            </fieldset>

            <fieldset>
                <label>Content</label>
                <textarea id="content" placeholder="content" name="content"> </textarea>
            </fieldset>

            <fieldset>
                <label>Tags</label>
                <input id="tags" type="text" placeholder="tags" name="tags"/>
            </fieldset>

            <fieldset>
                <input id="submit" type="submit" value="Submit" name="Submit"/>
            </fieldset>
        </form>
    </div>

PHP 代码:

    <?php
error_reporting(E_ALL);ini_set("display_error",true);
define('DB_NAME', 'blog_posts');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD);

if (!$link) {
    die('Could not connect: ' . mysqli_error($link));
}

$db_selected = mysqli_select_db($link, DB_NAME);

if (!$db_selected) {
    die('Can\'t use ' . DB_NAME . ': ' . mysqli_error($link));
}

//echo 'Connected successfully';

if(isset($_POST['Submit'])) {
    $title = $_POST['title'];
    $dateposted = $_POST['dateposted'];
    $content = $_POST['content'];
    $tags = $_POST['tags'];


    $sqli = "INSERT INTO posts 
    ("title", "dateposted", "content", "tags") 
          VALUES 
    ('$title','$dateposted', '$content', '$tags')";

    if (!mysqli_query($link, $sqli)) {
        die('Error: ' . mysqli_error($link));
    }
}

mysqli_close($link);

【问题讨论】:

  • 通知在insert.php,这里的代码是insert.php?您对使用此代码的 SQL 注入持开放态度,并且在列上使用了错误的封装,它应该是反引号。
  • 好的,所以我添加了反引号。 $_POST 仍然显示 ReferenceError
  • ReferenceError 听起来像是浏览器/控制台通知。您可以发布文字错误吗?我以为你收到了关于索引的 PHP 通知。
  • 当您将鼠标悬停在“$_POST”上时,它在 phpstorm 中。不过,我似乎无法获得它的屏幕截图。
  • 这里是关于勾号和反勾号superuser.com/questions/254076/…

标签: php html mysql forms


【解决方案1】:

这里:

$sqli = "INSERT INTO posts 
    ("title", "dateposted", "content", "tags") 
          VALUES 
    ('$title','$dateposted', '$content', '$tags')";

必须不加引号:

$sqli = "INSERT INTO posts 
    (title, dateposted, content, tags) 
          VALUES 
    ('$title','$dateposted', '$content', '$tags')";

我测试了你的代码,删除报价后它工作正常,表格如下:

CREATE TABLE `posts` (
  `id` int(11) NOT NULL,
  `title` varchar(100) DEFAULT NULL,
  `dateposted` date DEFAULT NULL,
  `content` text,
  `tags` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

【讨论】:

  • 我最初是这样做的,但按照 Chris85 说的做了。它仍然不起作用,我认为这与 $_POST
  • @ethacker 我仍在等待第二条评论回复。双引号也不是反引号.. " != `
  • 删除报价后,您发布的脚本正常。问题出在表上。导出表的 SQL 并复制到这里。
  • 我创建了您的数据库和表并完成了您的代码,删除了报价,所有工作都非常好!
  • @b2ok 我的表在 phpmyadmin 页面上,带有 wamp 服务器。如何在 phpstorm 中创建表?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-09
相关资源
最近更新 更多