Sens选项选择mysql数据库

时间:2014-12-10 12:11:49

标签: php html mysql database

我有一个选项,其中包含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>**

我希望你们知道为什么它不会把它发送到我的数据库..

2 个答案:

答案 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;
    }
  }
}