如何将bind-param与值数组一起使用?

时间:2015-03-30 13:29:42

标签: php mysql

我正在尝试使用预准备语句进行删除查询。

这是我的查询和PHP -

    $images = implode("','", $_POST['images']);

    echo $images;

    // Make the delete query:
    $q = "DELETE FROM image_info WHERE image_id IN ('?')"; 

    // Prepare the statement:
    $stmt = $mysqli->prepare($q);

    // Bind the variables:
    $stmt->bind_param('s', $images);

    // Execute the query:
    $stmt->execute();

此编码删除一行但$images具有一组ID。

有人可以告诉我这有什么问题吗? 谢谢。

3 个答案:

答案 0 :(得分:0)

您在绑定过程中使用了错误的标识符,使用i表示整数而不是s表示字符串值

$images = implode("','", $_POST['images']);

    echo $images;

    // Make the delete query:
    $q = "DELETE FROM image_info WHERE image_id IN ('?')"; 

    // Prepare the statement:
    $stmt = $mysqli->prepare($q);

    // Bind the variables:
    $stmt->bind_param('i', $images);

    // Execute the query:
    $stmt->execute();

答案 1 :(得分:0)

您不能在语句中使用单个?绑定多个变量。

看看这个答案: https://stackoverflow.com/a/17228326/1000437

答案 2 :(得分:0)

您可以尝试循环使用bindParam,如下例所示,并且假设您同时拥有3个ID。

$stmt = $mysqli->prepare( "DELETE FROM image_info WHERE image_id IN ( ?, ?, ? )"

foreach ( $images as $key => &$val ) {
    $stmt->bindParam( $key, $val );
}

$stmt->execute();

这有用吗?

最好的问候 弗雷德里克