需要帮助,一些无效的代码

时间:2018-06-30 01:37:50

标签: php

if ($_SERVER['REQUEST_METHOD'] == 'POST'){
    $follow = strip_tags($_POST["follow"]);
    $follow = addslashes($follow);
    $follow = mysqli_real_escape_string($conn, $follow);
    $sesid = $_SESSION["id"];
    $rowid = $row['id'];
    $followers = $conn->query("INSERT INTO followers (forid, fromid) VALUES ('$rowid', '$sesid'");
    echo "<h3><center>Sucessfully followed!</center></h3>";
}

它似乎不起作用。它不会引发任何错误。我是PHP的新开发人员。谢谢!

1 个答案:

答案 0 :(得分:1)

停止,这很疯狂。不要在查询中插入值,这是不好的事情。

此外,在这里和那里添加一些错误检查,不可能知道这段代码有什么问题(或者是吗?):

尝试更多类似的方法:

$conn = new mysqli('localhost', 'root', 'password', 'db_name');
if ($conn->connect_errno) {
  throw new Exception('Connection Error' . $conn->connect_err);
}

现在让我们处理帖子数据:

if(isset($_POST)) {
  $follow = $_POST["follow"];
  $sesid = $_SESSION["id"];
  $rowid = $row['id']; // don't know where this is coming from

  if($stmt = $conn->prepare("INSERT INTO followers (forid, fromid) VALUES (?, ?)") {
    $stmt->bind_param('si', $follow, $sesid);
    if(!$stmt->execute()) {
      throw new Exception('Error! Could not execute query.');
    }

    $stmt->close();
  } else {
    throw new Exception('Could not prepare query!');
  }
} else {
  // Add a error checking here
  throw new Exception('No post data');
}

准备好的语句将帮助您避免任何人试图在查询中插入不需要的内容(SQL注入)。

工作方式

  1. 准备查询($conn->prepare()
    • 请注意,这里有简单的?,否则值将是。这是我们的下一步。
  2. 使用$stmt->bind_param()绑定查询的参数。从第二个参数位置开始,这将告诉PHP每个值应该去哪里。
    • bind_param函数的文档:bool mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] )
    • 第一个参数的一些解释:
      • s-代表字符串($follow,我认为是字符串)
      • i-代表整数。会话ID
  3. 然后,最后执行查询($stmt->execute())。这将完成将值添加到数据库中的艰苦工作。
  4. 明确关闭与您的数据库的连接($conn->close());

有关PHP's official documentation的更多信息。