不发布到数据库/变量或未识别的索引,php / mysqli

时间:2017-03-11 03:40:40

标签: php mysql mysqli

我使用表单发布到具有列名ID(自动递增,INT),标题(VARCHAR(30)),日期发布(TEXT(10)),内容(TEXT)和标签(文本)。当我提交表单时,我希望带有名称标题的输入转到标题,dateposted到dateposted等。先谢谢。

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

        <fieldset>
            <legend>Content</legend>
            <textarea placeholder="content" name="content"> </textarea>
        </fieldset>

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

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

当我只有以下几行代码时,我得到了未定义的索引错误,尽管它仍然在数据库中创建了一行而没有任何内容。 (标题/内容/日期/标签没有任何东西,但有一个新的ID行)

$title = $_POST['title'];
$dateposted = $_POST['dateposted'];
$content = $_POST['content'];
$tags = $_POST['tags'];

echo $title;
echo $dateposted;
echo $content;
echo $tags;


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

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

如果我使用if isset函数,它会修复错误,但不会在数据库中创建新行。

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

echo $title;
echo $dateposted;
echo $content;
echo $tags;


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

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

2 个答案:

答案 0 :(得分:1)

将插入查询替换为:

INSERT INTO posts 
    (`title`, `dateposted`, `content`, `tags`) 
          VALUES 
    ('".$title."','".$dateposted."', '".$content."', '".$tags."')";

答案 1 :(得分:0)

检查你的sql语句。应该很好地引用php变量。

import-csv -path $filepath (import only rows 18-260) | select (blah blah blah)