从窗体插入数据库时出错


Error inserting into a database from a form

嗨,我正在尝试将表单中的一些数据插入我的数据库,但我似乎无法让它工作。我没有从 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(出于安全原因,我隐藏了定义语句)

<?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
?>

你混合了mysql_和mysqli_

例如,您有:

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

但随后您使用:

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

你应该使用一个或另一个,但你不能像这样将它们混合在一起

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

将您的 HTML 代码更改为:

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

并删除

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

告诉我它是怎么回事。

在查询中,您需要将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交错