问题
I have been making a script to display users and make changes to their admin privileges.
Here is the code:
while ($row= mysql_fetch_assoc($query)) {
$uname= $row['username'];
$fname= $row['first_name'];
$lname= $row['last_name'];
$email= $row['email'];
$admin= $row['admin'];
$insert .= '<tr>
<td>' .$uname. '</td>
<td>' .$fname. '</td>
<td>' .$lname. '</td>
<td>' .((isset($email)) ? $email:'No email set.'). '</td>
<td>'.(($admin == 'y') ? 'Admin':'User').'</td>
<td><input type="checkbox" name="' .$uname. '" value="'.(($admin == 'y')?'n':'y').'"/>'.(($admin == 'y')?'Make a user':'Make an admin user').'</tr>';
}
The $insert variable is then used later in the html to generate all the table rows with the user data.
The problem is that when I run the script this message appears
Notice: Undefined variable: insert in C:\wamp\www\...\user_edit.php on line 33
The script still works correctly though with only this message showing in the middle of the page.
When I take the . off from the $insert .= ' part the message disappears but the script only displays one user in the table.
Is there any reason why this may be happening? And is there a solution to my problem so I can have the script working and the message not showing up?
回答1:
Just set the variable to an empty string before you use it. You can't use .=
on a variable that does not exist yet:
$insert = "";
while($row= mysql_fetch_assoc($query)) {
// ...
$insert .= '<tr>';
// ...
来源:https://stackoverflow.com/questions/10605842/notice-undefined-variable-when-concatenating