3

我在php中有以下代码

$countryiso = mysql_query("SELECT distinct name as name FROM location_country where code NOT IN('A1','A2','AP','EU') order by name");
echo '<table>';
echo '<th>Country</th><th> Add/Remove </th>';
while ($row = mysql_fetch_assoc($countryiso)) {
 echo '<tr>';
 echo '<td>'. $row['name'] . '</td>';
 echo '<td><form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"><input type="hidden" name="id" value="<?php echo $id; ?>" /><input type="checkbox" name="checkinsat" value="1"<?php if($data['checkinsat'] == '1') echo 'checked'; ?>/><input type="submit" ></form></td>';
 echo '</tr>';
}
 echo '</table>';

我得到了错误

解析错误:语法错误,意外的 T_STRING,期待 ',' 或 ';' 在不知道我在哪里弄错了。

4

3 回答 3

2

不要echo使用php标签将参数放入表单中,而是使用字符串连接。

改变:

echo '<td><form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"><input type="hidden" name="id" value="<?php echo $id; ?>" /><input type="checkbox" name="checkinsat" value="1"<?php if($data['checkinsat'] == '1') echo 'checked'; ?>/><input type="submit" ></form></td>';

到:

echo '<td><form method="post" action="'. $_SERVER['PHP_SELF'] .'"> <input type="hidden" name="id" value="'. $id .'" /><input type="checkbox" name="checkinsat" value="1"'. ($data['checkinsat'] == '1'? 'checked' : '') .'<input type="submit" ></form></td>';

此外,不要使用mysql_*函数 - 它已被弃用(见红色框)并且容易受到 sql-injection 的影响。使用PDOMySQLi

于 2013-09-22T07:36:59.687 回答
1

你这里有错字

echo '<td><form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"><input type="hidden" name="id" value="<?php echo $id; ?>" /><input type="checkbox" name="checkinsat" value="1"<?php if($data['checkinsat'] == '1') echo 'checked'; ?>/><input type="submit" ></form></td>';

应该

echo '<td><form method="post" action="'.$_SERVER['PHP_SELF']'"><input type="hidden" name="id" value="'.$id.'" /><input type="checkbox" name="checkinsat" value="1"';
 if($data['checkinsat'] == '1') 
  echo 'checked />';
 echo '<input type="submit" ></form></td>';

您正在编写<?PHP ... ?>php 标签,这会导致此错误

于 2013-09-22T07:36:38.190 回答
1

问题是您在第 7 行<?php echo ... ?>的回声。您在回声中做的事情。您应该改为将值连接到字符串中。

代替:

 echo '<td><form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"><input type="hidden" name="id" value="<?php echo $id; ?>" /><input type="checkbox" name="checkinsat" value="1"<?php if($data['checkinsat'] == '1') echo 'checked'; ?>/><input type="submit" ></form></td>';

试试这个:

$checked = ($data['checkinsat'] == '1') ? 'checked' : '';
echo '<td><form method="post" action="'.$_SERVER['PHP_SELF'].'"><input type="hidden" name="id" value="'. $id.'" /><input type="checkbox" name="checkinsat" value="1" '.$checked.'/><input type="submit" ></form></td>';
于 2013-09-22T07:37:36.303 回答