Php “随机”;“非法抵销”;错误
每次Php “随机”;“非法抵销”;错误,php,mysql,email,loops,while-loop,Php,Mysql,Email,Loops,While Loop,每次while()循环时,以下代码都会产生非法偏移错误: 警告:第48行/Applications/MAMP/htdocs/admin/scripts/email\u owners\u send.php中的非法字符串偏移量“username” 我试图将$name设置为$email['username']如果$email['username']不是空的,如果是空的,$name应该设置为$email$email由while()语句从mysql\u fetch\u assoc()设置。这是我目前的代码
while()
循环时,以下代码都会产生非法偏移错误:
警告:第48行/Applications/MAMP/htdocs/admin/scripts/email\u owners\u send.php中的非法字符串偏移量“username”
我试图将$name
设置为$email['username']
如果$email['username']
不是空的,如果是空的,$name
应该设置为$email
$email
由while()
语句从mysql\u fetch\u assoc()
设置。这是我目前的代码:
// print out all the email address recipients
$query = mysql_query("SELECT * FROM ownersemails WHERE deleted=0 LIMIT 5");
$recipients = '';
$total = mysql_num_rows($query);
$num = 0;
while($email = mysql_fetch_assoc($query)) {
// add to count
$num++;
// set email
$email = $email['email'];
// set name as username if apparant
if(!empty($email['username'])) {
$name = $email;
}
else {
$name = $email['username'];
}
// add to recipients string (=. append)
$recipients .= '{ "email": "'.$email.'", "name": "'.$name.'" }';
// only add a comma if it isn't the last one
if($num!=$total) {
$recipients .=',';
}
}
您正在覆盖while循环设置的$email变量
while($email = mysql_fetch_assoc($query)) {
然后在这里覆盖它:
$email = $email['email'];
因此,$email
将成为字符串而不是数组。你可以把这个改成
$email_address = $email['email']
您有一个名为
$email
的数组,它保存数据库行中的所有列。您正在使用仅电子邮件列的值覆盖该对象:
while($email = mysql_fetch_assoc($query)) {
// add to count
$num++;
// set email
$email = $email['email'];
...
不要那样做。调用row对象$row
会更有意义。你应该给变量命名,这样就可以清楚地知道它们是什么
while($row = mysql_fetch_assoc($query)) {
// add to count
$num++;
// set email
$email = $row['email'];
...
请它们不再得到维护,而是在使用。学习代替,并考虑使用。