php pdo用变量更新查询

时间:2016-05-17 07:35:16

标签: php mysql pdo

我希望有人可以指出我在这个更新中出错的地方,我已经尝试了各种方法,但似乎无法让它工作,可能是一个简单的错误,但我似乎无法找到它。

function set_live($row_id, $mobile_number)
{
    global $conn;
    $live = 1;

    $sql = "
     UPDATE 
      connections 
     SET 
      live = :live, 
      voice_number = :mobile_number 
     WHERE 
      id = :row_id";

    $stmt = $conn->prepare($sql);
    $stmt->bindParam(':mobile_number', $mobile_number, PDO::PARAM_INT);
    $stmt->bindParam(':row_id', $row_id, PDO::PARAM_INT);
    $stmt->bindParam(':live', $live, PDO::PARAM_INT);
    $stmt->execute();

    echo "Record edited successfully";
    $conn=null;
}

$conn是与SELECT等一起使用的PDO连接 所有变量都是数字,所有回声都可以,因此在函数中 我可以使用phpmyadmin中的实际值运行查询,它可以正常工作

2 个答案:

答案 0 :(得分:1)

只需替换此行

$stmt->bindParam(':mobile_number', $mobile_number, PDO::PARAM_INT);

用这个

$stmt->bindParam(':mobile_number', $mobile_number, PDO::PARAM_STR);

因为电话号码长度超过整数。

答案 1 :(得分:-1)

为什么不尝试使用数组?这种方法可能适合你的伎俩:

    <?php
        function set_live($row_id, $mobile_number){
            global $conn;
            $live = 1;
            $sql    = "UPDATE connections SET live=:live, voice_number=:mobile_number WHERE id=:row_id";
            $stmt   = $conn->prepare($sql);
            $params = array(
                "live"          =>$live,
                "mobile_number" =>$mobile_number,
                "row_id"        =>$row_id,
            );

            $stmt->execute($params);
            echo "Record edited successfully";
            $conn=null;
        }