php mysql IN子句不使用CSV变量。只有第一行受影响

php mysql IN子句不使用CSV变量。只有第一行受影响,php,mysql,csv,Php,Mysql,Csv,当我使用php my admin查询数据库时,以下sql起作用 update invoice set paid = 1, date_recieved = 0000-00-00, check_number = 00000 where invoice_number IN (110038,110035,110033) 我有一个文本框,用户在其中输入以逗号分隔的数字。这是通过post提交到$invoice变量的。 当我运行以下命令时,只有第一行受影响。 注释掉的代码是我尝试过但不起作用的东西 if(i

当我使用php my admin查询数据库时,以下sql起作用

update invoice
set paid = 1, date_recieved = 0000-00-00, check_number = 00000
where invoice_number IN (110038,110035,110033)
我有一个文本框,用户在其中输入以逗号分隔的数字。这是通过post提交到$invoice变量的。 当我运行以下命令时,只有第一行受影响。 注释掉的代码是我尝试过但不起作用的东西

if(isset($_POST["paymentbtn"])){
    $invoice = $_POST["invoice"];
    //$data = array($invoice);
    //$data = implode(",", $data);
    $date = $_POST["date"];
    $check = $_POST["checknumber"];
    //$invoice = mysql_real_escape_string($invoice);
    $sql = mysql_query("update invoice set paid = 1, date_recieved = '$date',     check_number = '$check'
where invoice_number IN ('$invoice')" )or die (mysql_error());
}
我错过了一些简单的事情


p、 当我只输入一个值时,它也起作用,所以它不是无效日期或任何东西。不要将“”用于$invoice,因为当您使用它时,它类似于“1,2,3”,应该类似于“1”、“2”、“3”或“1,2,3”

我认为你的问题应该如下


“更新发票集paid=1,date\u received='$date',check\u number='$check'其中发票号位于($invoice)”

使用内爆,然后进行循环。请尝试使用
foreach($\u POST['invoice']作为$val){$values[]=$val;}$inv=内爆(,,,,$values)然后
发票编号在(“$inv”)中的位置不起作用
它不会对数据库进行任何更改,例如单个数字或多个数字。您对内爆所做的操作是否在值之间添加“,”。如果是这样,您是否缺少前导“?foreach也不起作用