美好的一天人们,
几天前,我开始学习php,现在我打算用mysql自学数据库查询。
但是,我目前的代码不会处理任何事情。
它应该从index.html获取文本输入,将其传递给a.php并让a.php在数据库(电话簿)中查找(name /)输入字符串,然后输出表中的匹配行。
它由两部分组成; index.html就是以下内容:
<form action="a.php">
<input type="text" name="q">
<input type="submit">
</form>
和应该处理输入数据的a.php:
<?php
echo $_GET['q'];
$such = $_GET['q'];
$mysqliu = new mysqli("HOST", "User", "Password", "Database");
$sql="Select * from LIST where name like '%$such%'";
$result = mysqli_query($mysqliu,$sql);
if($result = $mysqliu->query($sql)) {
echo "<table><tr><th>Kennummer</th><th>Name</th><th>Strasse</th><th>PLZ</th><th>Telefon</th></tr>";
while($row = $result->fetch_array() ) {
echo "<tr>";
echo "<td>" , "$row[0]" , "</td>";
echo "<td>" , "$row[1]" , "</td>";
echo "<td>" , "$row[2]" , "</td>";
echo "<td>" , "$row[3]" , "</td>";
echo "<td>" , "$row[4]" , "</td>";
echo "</tr>";
}
}
$result->close();
echo "</table>";
else {
echo"Nope"
}
$mysqliu->close();
?>
我尽可能多地试着看看它在哪里打破了,似乎只要我想做点什么就可以了。&#34; q&#34; (来自index.html的查询),它会中断
上面的代码不包含SQL连接数据,但是我的代码中存在这些数据
这个问题与PHP服务器或服务器端无关,所以我确定我做错了。
我可以在a.php中回显变量q,所以它已经过去了,但无论我在那之后做什么,没有任何反应,我得到一个空白页面。
请问专家能帮帮我吗?
解决:这是;在最后错过了。 感谢大家的投入。
此致〜
答案 0 :(得分:1)
尝试在表单标记中添加方法,如GET或POST。设置q字段的默认值。还要为提交类型设置一个名称,并将整个$ _GET或$ _POST数组转储到php文件中。
答案 1 :(得分:1)
首先,您需要使用error_reporting(-1);
在页面中启用错误报告。当您收到错误但未显示时,因为错误报告已关闭。
其次,您的代码欢迎SQL注入所以最好首先了解如何在数据库查询后避免SQL注入。
第三,您需要检查PHP上是否安装了MySQLi
扩展名。使用var_dump(function_exists('mysqli_connect'));
,然后检查输出。
第四,$mysqli->fetch_array();
返回奇怪的结果,有时是因为旧的PHP版本因此可能是错误的原因,请检查一次。
第五,我相信你的if else声明有错误。 else
语句应在}
语句的if
之后开始。
我可以在您从错误日志中显示问题中的确切错误后编辑我的答案,同时您可以查看这些错误。
答案 2 :(得分:1)
我不会给你确切的答案,我会让你弄清楚......
keyDownTime
delta
声明,看起来是否正确?答案 3 :(得分:1)
method
<form>
属性
a.php
怎么办?您应该验证页面,以便用户不能只访问此页面LIST
吗?对此区分大小写。mysqli_real_escape_string()
扩展名,或者更好地使用mysqli_* prepared statement
。您的表单应如下所示:
<form action="a.php" method="GET">
并清理传递数据的值:
$such = mysqli_real_escape_string($mysqliu,$_GET["q"]);
如果您对准备好的陈述感到好奇,可以试试这个:
$such = "%".$_GET["q"]."%";
$mysqliu = new mysqli("HOST", "User", "Password", "Database"); /* REPLACE NECESSARY DATA */
if($stmt = $mysqliu->prepare("SELECT kennummer,name,strasse,plz,telefon FROM LIST WHERE name LIKE ?")){ /* REPLACE NECESSARY COLUMN NAME */
$stmt->bind_param("s",$such); /* BIND PARAMETER TO THE QUERY */
$stmt->execute(); /* EXECUTE QUERY */
$stmt->bind_result($kennummer,$name,$strasse,$plz,$telefon); /* BIND THE RESULT TO VARIABLE */
?>
<table>
<tr>
<th>Kennummer</th>
<th>Name</th>
<th>Strasse</th>
<th>PLZ</th>
<th>Telefon</th>
</tr>
<?php
while($stmt->fetch()){ /* LOOP THE RESULT */
?>
<tr>
<td><?php echo $kennummer; ?></td>
<td><?php echo $name; ?></td>
<td><?php echo $strasse; ?></td>
<td><?php echo $plz; ?></td>
<td><?php echo $telefon; ?></td>
</tr>
<?php
}
?>
</table>
<?php
$stmt->close();
}
答案 4 :(得分:1)
解决了:最后,;
失踪了。感谢大家的投入。