【发布时间】:2017-10-31 15:13:54
【问题描述】:
我正在尝试从两个不同的表中搜索值并组合这些值。我需要一个更多的搜索表单,以及一种将值相乘的方法。我是初学者。
顺便说一句,我没有得到任何价值;只是“没有找到与您的查询匹配的记录。”数据库很好!
这是我的代码:
<title>Search</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "root", "", "mysql");
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
$search1 = @$_GET['Valorm2'];
$search2 = @$_GET['M2'];
$sql = "SELECT * FROM porteval, squarefeet WHERE Freguesia = '$search1' AND M2 = '$search2'";
if($result = mysqli_query($link, $sql)){
if(mysqli_num_rows($result) > 0){
echo "<table>";
echo "<tr>";
echo "<th>ADVISED VALUE </th>";
echo "</tr>";
while($row = mysqli_fetch_array($result)){
echo "<tr>";
echo "<td>" . $row['Id'] . "</td>";
echo "<td>" . $row['Pais'] . "</td>";
echo "<td>" . $row['Distrito'] . "</td>";
echo "<td>" . $row['Freguesia'] . "</td>";
echo "<td>" . $row['Valorm2'] . "</td>";
echo "<td>" . $row['Valorm2'] * 100 . "</td>";
echo "</tr>";
}
echo "</table>";
// Free result set
mysqli_free_result($result);
} else{
echo "No records matching your query were found.";
}
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
// Close connection
mysqli_close($link);
?>
</body>
</html>
【问题讨论】:
-
您的代码容易受到SQL injection 攻击。您应该通过mysqli 或PDO 驱动程序使用带有绑定参数的预处理语句。 This post 有一些很好的例子。
-
A) 评论不会赢得声誉。 B) 你说你是菜鸟。我发表评论是为了帮助您避免学习坏习惯,并减少未来用户基于此代码进行自己的工作的可能性。 C)“我稍后会修复它”永远不会发生。第一次正确地完成它的工作量要少得多。 D) 侮辱试图帮助你的人往往会产生糟糕的结果。
-
1- 回显
$_GET['Valorm2']和$_GET['M2']以确保它们加载了您期望的值。 2-确保您的数据库中有您期望的数据(例如,从任何其他客户端而不是 PHP、MySQL Workbench 执行相同的 SQL 语句)。最后提醒您使用 SQL 注入可以在以后保护您的整个系统。检查此how to switch to prepared statements -
@BWIS:乐于助人的 cmets 在这里很正常,而且回复说你“解雇”他们乍一看似乎很粗鲁。这反过来可能会为您赢得投票或 mod 报告,因此最好以善意回应(或根本不回应)。
-
@BWIS 对您的问题的评论不仅针对您,也针对其他用户。使用易受 SQL 注入攻击的代码是危险的,应警告其他用户不要使用它。
标签: php