我正在制作一个php脚本,它将:
1.连接数据库
2.在数据库中查询用户输入的字符串
3.将查询返回的每一行显示为动态创建的表单。每个表单都有两个“隐藏”输入字段,用于填充带有一些图像和文本的单独页面。表单是通过链接提交的,该链接使用onclick属性和javascript'document.form.submit()'来处理提交表单。
我遇到的问题是每个创建的表单都会导致页面抛出一个'分号预期'错误,说明我的代码中的单词中间应该有一个分号!我99.99%确定导致此错误的是在下面的代码中的某个地方,但我现在已经盯着它看了很长一段时间而且我很难过。
// Run a query against each field to search for input
foreach($columns as $field){
$searchquery = 'SELECT * FROM mytable WHERE '.$field.' LIKE \'%'.$input.'%\'';
$results = $db->Execute($searchquery);
// We introduce HTML formatting for each result in $results
foreach($results as $resultset) {
echo '<div style="border: 2px solid black;">';
// Each result in $results is an array, where the keys and values correspond to the field names and values of the table
foreach($resultset as $key=>$value) {
if($key == 'ID'){ // Query the database by ID for the rows returned by the previous query
$resultquery = 'SELECT field1, field2, field3 FROM mytable WHERE '.$key.' = \''.$value.'\'';
$row = $db->Execute($resultquery);
$row = explode(",", $row);
$id = $row[2];
$company = $row[3];
$prodname = $row[4];
echo "<form name='rowForm.$i' action='page.php' method='POST'>";
echo "<input type='hidden' name='Company' value='$company'>";
echo "<input type='hidden' name='ProductName' value='$prodname'>";
echo "<a href='path/to/my/page' onclick='javascript:document.rowForm.$i.submit(); return false;'> $company - $prodname ($id) </a>";
echo "</form>";
$i++;
}
}
echo '</div>';
}
}
Fyi,$ columns是一个数组,它包含我表中所有列的名称。所有表单都能正确显示,一切看起来都应该如此;由于这个分号错误,唯一的问题是链接无法正常工作。我相信我已经发布了所有相关代码,但如果看起来有些东西丢失,请随时告诉我。如果有人能指出我正确的方向,我真的很感激!
编辑:这是由上面的php生成的html代码,添加了一些额外的空格,并且为了可读性,某些变量的实际值被替换为{$ varname的value}。请注意,此代码是为sql查询返回的每一行生成的。
<div style="border: 2px solid black;">
<form name='rowForm.0' action='page.php' method='POST'>
<input type='hidden' name='Company' value='{$company's value}'>
<input type='hidden' name='ProductName' value='{$prodname's value}'>
<a href='http://link/to/my/site' onclick='javascript:document.forms[\'rowForm.0\'].submit(); return false;'> {This is the link text} </a>
</form>
</div>
答案 0 :(得分:0)
不太确定,但我猜你试图在单引号中逃脱的角色没有被转义。你应该这样写:
$searchquery = "SELECT * FROM mytable WHERE " .$field. " LIKE '% ". $input . "%'";
$resultquery = "SELECT field1, field2, field3 FROM mytable WHERE " .$key. " = '" . $value . "'";
//编辑:
我的坏,我得到了逃避的东西不太正确:
Note: Unlike the double-quoted and heredoc syntaxes, variables and escape sequences for special characters will not be expanded when they occur in single quoted strings.
http://php.net/manual/en/language.types.string.php
并且,正如已经提到的,上面的代码在底部缺少}
来关闭第一个foreach
;)
答案 1 :(得分:0)
这是:
document.rowForm.$i.submit()
HTML源代码中的数量?
document.rowForm..submit()
...因为那时我可以看到一个问题...
如果没有,我仍然会选择:
document.forms['rowForm.$i'].submit()