我有一个选项,其中包含3个选项(打开关闭和忙碌)。 现在我想将我选择的选项发送到我的Mysql数据库。 我收到了这段代码。
这是我的功能
function editStatus($pStatus, $id){
$id= (int) $id;
$query = mysql_query("UPDATE posts SET status = '$pStatus' WHERE id = '$id' ") or die (mysql_error());
}
这里我称之为我的功能
if (isset($_POST['submit'])) {
if(isset($_POST['postcats'])) {
editStatus($_POST['postcats'] , $_POST['$id']);
header('location: posts.php');
}else{
echo "Please set a post name";
include('addpost.php');
}
}else{
header('location: addpost.php');
}
这是我的表格
** <tr>
<TD><label for="postcats">Status</label></TD>
<td><select name="postcats">
<option name="Open" value="Open">Open</option>
<option name="Busy" value="Busy">Busy</option>
<option name="Closed" value="Closed">Closed</option>
</select></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" /></td><td><input type="hidden" name="id" value="<?php echo$_GET['id'];?>" /></td>
</tr>**
我希望你们知道为什么它不会把它发送到我的数据库..
答案 0 :(得分:1)
您正在调用editPost
函数而不是editStatus
备注强>
添加error_reporting(E_ALL);
和ini_set('display_errors', 1);
以捕获错误。
在die;
exit;
或header("Location: ...");
您很容易受到sql注入,因为没有逃脱$pStatus
。
不推荐使用mysql_ *函数。请改用mysqli或PDO。
答案 1 :(得分:0)
我不确定为什么它不会发布到数据库,你从php或mysql得到任何错误?另外,你不应该使用弃用的mysql函数,而是使用mysqli。并准备好语句以防止SQL注入。示例如下:
if (isset($_POST['submit'])) {
if(isset($_POST['status'])) {
editStatus($_POST['status'], $_POST['id']);
function editStatus($status, $id) {
// Get the mysql connection
$mysqli = new mysqli('localhost', 'username', 'password', 'db');
// Create a new prepared statement
if($stmt = $mysqli->prepare("UPDATE posts SET status = ? WHERE id = ?")) {
// Bind the parameters to replace the question marks on the query
// In the correct order: si (String, Int)
$stmt -> bind_param("si", $status, $id);
// Execute the statement
$stmt -> execute();
// Close the statement
$stmt -> close();
}else {
return $mysqli->error;
}
// Close the connection
$mysqli -> close();
return true;
}
}
}