У меня есть этот код PHP:
for($i=1; $i<=$_POST["counter"]; $i++) { if($_POST["checkbox$i"]) { //select the billing_pdf row $sql="SELECT * from billing_pdf_archive where sequence = '".$_POST["checkbox$i"]."' "; $rs=mysql_query($sql,$conn); while($result=mysql_fetch_array($rs)) { //now select all contacts for the company who receive all accounts emails $sql2="SELECT * from contacts where company_sequence = '".$result["customer_sequence"]."' and receive_accountsemails = 'yes' "; $rs2=mysql_query($sql2,$conn) or die(mysql_error()); if(mysql_num_rows($rs2) > 0) { while($contacts2=mysql_fetch_array($rs2)) { //generate the list of emails address in an array $emails_list[] = $contacts2["email"]; } $emails_list = implode(',',$emails_list); } } $ins_sql2="INSERT into email_attachments (email_seq, attachment) values ('".$email_sequence."', '".$result["pdf"]."') "; $ins_rs2=mysql_query($ins_sql2,$conn) or die(mysql_error()); $up_sql="UPDATE emails set emailto = '".$emails_list."' where sequence = '".$email_sequence."' "; $up_rs=mysql_query($up_sql,$conn); } }
но я получаю эту ошибку:
Неустранимая ошибка: оператор [] не поддерживается для строк в
на строке, которая гласит:
$emails_list[] = $contacts2["email"];
Я использую один и тот же код массива на других страницах (без цикла for), и они отлично работают
Что я делаю не так?
вы заполняете массив $emails_list[]
во втором, а с помощью $contacts2["email"]
. в следующей строке вы введете массив в строку.
для следующего результата (first while loop) $emails_list
– это строка. теперь вы не можете преобразовать строку в массив
попробуй это:
$emailsListData = array(); while($contacts2=mysql_fetch_array($rs2)) { //generate the list of emails address in an array $emailsListData[] = $contacts2["email"]; } $emails_list = implode(',',$emailsListData);
в$emailsListData = array(); while($contacts2=mysql_fetch_array($rs2)) { //generate the list of emails address in an array $emailsListData[] = $contacts2["email"]; } $emails_list = implode(',',$emailsListData);
Вы уже использовали $ emails_list как строку, где на вашей странице, например $ emails_list = 7;
и снова используя его как
$ emails_list [] = array (1,2,4);