我正在使用自制搜索引擎制作网站,我想将人们的搜索字符($ search)放入数据库中。如果$ search已经在数据库中,我希望相应的数字(表中的Aantal列)在何时上升。 我成功地在表中添加了一个新的searchterm,但没有更新已经存在的那个。它只是创建一个Aantal = 1的新条目。 这是我的代码,searchterms是db和table的名称,Zoekterm是searchterms的列名称:
抱歉我的英语不好: - )
if ($search != null) {
$conn = new mysqli($servername, $username, $password, $dbname);
if ("SELECT * FROM searchterms WHERE Zoekterm = '{$search}'"){
$inserts = "INSERT into searchterms values('". $search . "', '" . 1 . "')";
if ($conn->query($inserts) === FALSE) {
echo "Error: " . $inserts . "</ br>" . $conn->error;
}
}
elseif (!"SELECT * FROM searchterms WHERE Zoekterm = '{$search}'") {
$i = mysqli_query($conn, "SELECT Aantal FROM searchterms WHERE Zoekterm = '{$search}'");
$j = mysqli_fetch_row($i);
foreach ($j as $k) {
$k++;
echo "<p>$k</p>";
}
$sql = "UPDATE searchterms SET Aantal='$k' WHERE Zoekterm = '$search'";
}
$conn->close();
}
答案 0 :(得分:1)
这是完全错误的:
if ("SELECT * FROM searchterms WHERE Zoekterm = '{$search}'"){
if("string")
将始终评估为true
- 这些不是查询。它们的字符串碰巧包含一些 LOOK 的字符,就像sql一样。在将text / sql发送到数据库并执行它之前,该文本/ sql不会成为查询。
最重要的是,你很容易受到sql injection attacks
的攻击