我有这段代码(缩短):
my $lins = $dbh->selectall_arrayref("SELECT id, name, popis, pic FROM line", { Slice => {} }) or die 'Query (SELECT from line) failed';
...
my $sth = $dbh->prepare("SELECT id, name, line_id, colorset_id FROM products WHERE id=?");
if ($prod_id =~ /^[0-9]+$/ ) {
$sth->execute($prod_id);
my $prod;
while ($prod = $sth->fetchrow_hashref) {
print "I have ".$prod->{id}." ". $prod->{name}." <br>";
</%perl>
...
<tr><td>Model row</td><td>
<select id="line_id" name="line_id">
% foreach my $lined (@$lins) {
% if ( $lined->{id} == $prod->{line_id} {
<option value="<% $lined->{id} %>" selected><% $lined->{name} %></option>
% } else {
<option value="<% $lined->{id} %>"><% $lined->{name} %></option>
% }
% }
</select>
...
编译有问题:
error: Error during compilation of /var/www/mason/eshop/prod.mas:
syntax error at /var/www/mason/eshop/prod.mas line 83, near "$m"
Execution of /var/www/mason/eshop/prod.mas aborted due to compilation errors.
context:
...
79: <tr><td>Modelova rada</td><td>
80: <select id="line_id" name="line_id">
81: % foreach my $lined (@$lins) {
82: % if ( $lined->{id} == $prod->{line_id} {
83: <option value="<% $lined->{id} %>" selected><% $lined->{name} %></option>
84: % } else {
85: <option value="<% $lined->{id} %>"><% $lined->{name} %></option>
86: % }
87: % }
...
如您所见,第 83 行没有任何可疑之处。使用另一个变量 (colorset_id) 的相同机制效果很好。 你有人知道这是怎么回事吗?正如编译器所说,没有任何对 $m 的引用..我很困惑......
啊啊啊! if 条件存在语法错误 - 缺少括号“)” 抱歉问这个问题,我花了几个小时:-(