duanfu4446 2016-09-16 15:47
浏览 39
已采纳

返回php和sql中变量数组中的列所在的行

I am writing a query that will return records when the value of one of the columns matches any of the elements of an array. If I use a static array it works (see sample):

sql = "SELECT *
        FROM tasks
            WHERE
            tasks.type IN ('homework', 'chores', 'laundry')";

What if I have an array of tasks that is populated from user input that I want to use from comparison? Like this:

$task_list = //declaration and populate the array. I know it works, so I'm skipping it

sql = "SELECT *
            FROM tasks
                WHERE
                tasks.type IN "+$task_list+" ";

This gives me an error. I really am not any good at mixing php with sql and did search for the answer ... maybe I wasn't able to search properly for the right syntax.

For those that want to know, var_dump($task_list); prints the following:

array(3) { [0]=> string(8) "homework" [1]=> string(6) "chores" [2]=> string(7) "laundry" } 
  • 写回答

1条回答 默认 最新

  • douchun2158 2016-09-16 15:56
    关注

    It fails because $task_list is an array, you should do something like this :

    $task_list_str = sprintf('"%s"', implode('", "', $task_list));
    $sql = 'SELECT *
           FROM tasks
           WHERE
               tasks.type IN (' . $task_list_str . ')';
    

    It's a bit convoluted, but it stays as close as possible from your code.

    Hope this helps.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥30 自适应 LMS 算法实现 FIR 最佳维纳滤波器matlab方案
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动