Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中添加多个条件来准备语句?_Php_Mysqli_Conditional_Prepared Statement - Fatal编程技术网

如何在php中添加多个条件来准备语句?

如何在php中添加多个条件来准备语句?,php,mysqli,conditional,prepared-statement,Php,Mysqli,Conditional,Prepared Statement,我需要建议,对不起,如果我要求太多。 我对添加条件来准备语句感到困惑,就像我们在MySQL中所做的那样 示例:当用户想要在我的站点上编辑他们自己的文章时,MySQL中的查询是这样的。 检查用户 $sql = "select * from articles where article_id= $id AND userID = $_SESSION['id'] "; 或 $sql = "select * from articles where article_id= $id AND userID

我需要建议,对不起,如果我要求太多。 我对添加条件来准备语句感到困惑,就像我们在MySQL中所做的那样

示例:当用户想要在我的站点上编辑他们自己的文章时,MySQL中的查询是这样的。 检查用户

$sql = "select * from articles where article_id= $id AND userID = $_SESSION['id'] "; 

$sql = "select * from articles where article_id= $id AND userID = $uid";
在MYSQLI面向对象中仍然相同

但准备声明让我困惑

我正在为更新页面执行的表单示例: 链接到更新页面:

更新文章

if(isset($_POST["article_ID"]) && !empty($_POST["article_ID"]) && isset($_POST["uid"]) && !empty($_POST["uid"])){
//获取隐藏的输入值

$id = $_POST["id"];
//验证这里的帖子

if(empty($name_err)){
$conn = new mysqli($servername, $username, $password);
$sql = "UPDATE articles SET name=? WHERE article_id=? AND  uid=?";
if($stmt = $conn->prepare($sql)){
        $stmt->bind_param("isi", $article_id, $name, $uid);

        // Set parameters
        $name = $name;
        $uid = $uid;
        $article_id = $article_id;
        if($stmt->execute()){
//回显值或错误 } 然后在这里选择零件

if(isset($_GET["article_ID"]) && !empty(trim($_GET["article_ID"])) && isset($_GET["uid"]) && !empty(trim($_GET["uid"]))){
    // Get URL parameter
    $article_ID =  trim($_GET["article_ID"]);
    $uid =  trim($_GET["uid"]);

$sql = "SELECT * FROM articles WHERE article_ID = ? AND  uid = ?";
if($stmt = $conn->prepare($sql)){
    $stmt->bind_param("ii", $article_ID, $uid);
    $article_ID = $article_ID;
    $uid = $uid;
    if($stmt->execute()){
        $result = $stmt->get_result();

        if($result->num_rows == 1){
           $row = $result->fetch_array(MYSQLI_ASSOC);

            // Retrieve individual field value
            $name = $row["name"];
我的做法是否正确,或者应该如何查询以及应该如何添加条件

Html部分:

<form>
<input type="text" name="post">
</form>


UPDATE
语句中,您不必绑定结果,因为它不会返回结果(它返回一个成功值)。感谢更正和有用的链接,我想的主要问题是用户是否可以访问编辑其他帖子?比如将链接中的文章id更改为另一个帖子id并编辑该帖子@MartinI担心这个问题对于堆栈溢出来说太宽泛了——您需要有一个特定的实例和一段特定的代码来检查是否发生了堆栈溢出。