从表单插入数据库时​​出错

时间:2014-11-18 17:19:10

标签: php mysql insert

您好我试图将表单中的一些数据插入到我的数据库中,但我似乎无法让它工作。我没有从mysql_error()中得到任何错误,而且我无法解释可能出错的生活。任何帮助将不胜感激,提前感谢!

代码正在输出"不成功!测试9"。

这是我的表格

<form method="post" action="blog_add_posts.php">
<input type="hidden" name="submitted" value="true" />

<fieldset>
    <legend>Add Blog Posts</legend>
    <label>Title: <input type="text" name="title" /></label>
    <label>Body: <input type="text" name="body" /></label>
</fieldset>
<br />

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

这是我的PHP(我出于安全原因隐藏了define语句)

<?php
if (isset($_POST['submitted'])){
    define('DB_NAME', '(Hiding For Security)');
    define('DB_USER', '(Hiding For Security)');
    define('DB_PW', '(Hiding For Security)');
    define('DB_HOST', '(Hiding For Security)');

    $link = mysql_connect(DB_HOST, DB_USER, DB_PW);

    if(!$link){
        die('Test Connection Failed 1: ' . mysql_error());
    }

    $db_selected = mysql_select_db(DB_NAME, $link);

    if(!$db_selected){
        die('Test Connection Failed 1: ' . mysql_error());
    }

    $title = $_POST['title'];
    $title = mysqli_real_escape_string($link, $title);
    $body = $_POST['body'];
    $body = mysqli_real_escape_string($link, $body);
    $sqlInsert = "INSERT INTO 'phpmy1_belairfinishing_com'.'Blog' (Post_ID, Post_Title,     Post_Date, Post_Body) VALUES (NULL, '$title', CURRENT_TIMESTAMP, '$body')";

    if(mysqli_real_query($link, $sqlInsert)){
        echo "<p> Successful! </p>";
    } else {
        echo "<p> Unsuccessful! Test 11 </p>";
    }

    $newrecord = "Successfully Added To Database";

    mysqli_close($link);

} //End of ISSET if statement

?>

3 个答案:

答案 0 :(得分:2)

你正在混合mysql_和mysqli _

例如,你有:

$link = mysql_connect(DB_HOST, DB_USER, DB_PW);

然后你使用:

if(mysqli_real_query($link, $sqlInsert)){

您应该使用其中一种,但不能像这样将它们混合在一起

答案 1 :(得分:1)

<input type="submit" value="Submit Post" />

将您的HTML代码更改为:

<input type="submit" name="submitted" value="Submit Post" />

并删除

<input type="hidden" name="submitted" value="true" />

告诉我它是怎么回事。

答案 2 :(得分:0)

在您的查询中,您需要将PHP变量放在字符串之外,否则它们将被解析为文本(例如:“$ title”)而不是变量的实际值:

$sqlInsert = "INSERT INTO 'phpmy1_belairfinishing_com'.'Blog' (Post_ID, Post_Title, Post_Date, Post_Body) VALUES (NULL, '".$title."', CURRENT_TIMESTAMP, '".$body."')";

同样在您的表单中,您需要value,以便获得数据:

<input type="text" name="title" value="" />
<input type="text" name="body" value="" />

这使得它们在开始时空白,请确保在点击提交之前键入它们。

@bhttoan 指出的一样。您需要确保为所有功能mysqli而不是mysqlmysqli隔行扫描。