嗨,我正在尝试将表单中的一些数据插入我的数据库,但我似乎无法让它工作。我没有从 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
,而不是mysql
与mysqli
交错