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的新开发人员。谢谢!
答案 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注入)。
工作方式
$conn->prepare()
)
?
,否则值将是。这是我们的下一步。$stmt->bind_param()
绑定查询的参数。从第二个参数位置开始,这将告诉PHP每个值应该去哪里。
bind_param
函数的文档:bool mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] )
s
-代表字符串($follow
,我认为是字符串)i
-代表整数。会话ID $stmt->execute()
)。这将完成将值添加到数据库中的艰苦工作。$conn->close()
); 有关PHP's official documentation的更多信息。