dongpan9760 2017-04-19 20:23
浏览 203

将PHP数组作为SQL WHERE子句的参数传递

Adapting an answer from here to try and pass an array as the parameter for a WHERE clause in MySQL. Syntax seems okay but I'm just getting null back form the corresponding JSON. I think understand what it is supposed to do, but not enough that I can work out where it could be going wrong. The code for the function is;

public function getTheseModulesById($moduleids) {
    require_once 'include/Config.php';
    $con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD);
    // Check connection
    if (!$con)
      {
        die("Connection error: " . mysqli_connect_error());
      }
    // selecting database
    mysqli_select_db($con, DB_DATABASE) or die(mysqli_connect_error());

    $in = join(',', array_fill(0, count($moduleids), '?'));
    $select = "SELECT * FROM modules WHERE id IN ($in)";
        $statement = $con->prepare($select);
        $statement->bind_param(str_repeat('i', count($moduleids)), ...$moduleids);
        $statement->execute();
    $result = $statement->get_result();

    $arr = array();
    while($row = mysqli_fetch_assoc($result)) { 
        $arr[] = $row;
    }

    mysqli_close($con);
    return $arr;
}

And the code outwith the function calling it looks like;

$id = $_POST['id'];

    $player = $db->getPlayerDetails($id);   
    if ($player != false) {
        $pid = $player["id"];
        $moduleids = $db->getModulesByPlayerId($pid);   //this one is okay
        $modules = $db->getTheseModulesById($moduleids); //problem here

        $response["player"]["id"] = $pid;           
        $response["player"]["fname"] = $player["fname"];
        $response["player"]["sname"] = $player["sname"];
        $response["modules"] = $modules;
        echo json_encode($response);

[EDIT] I should say, the moduleids are strings.

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
    • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
    • ¥16 mybatis的代理对象无法通过@Autowired装填
    • ¥15 可见光定位matlab仿真
    • ¥15 arduino 四自由度机械臂
    • ¥15 wordpress 产品图片 GIF 没法显示
    • ¥15 求三国群英传pl国战时间的修改方法
    • ¥15 matlab代码代写,需写出详细代码,代价私
    • ¥15 ROS系统搭建请教(跨境电商用途)
    • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。