【发布时间】:2016-08-16 08:06:39
【问题描述】:
我正在做一个网络应用练习,注册用户可以在其中登录并创建笔记。现在我想添加一个功能,如果我点击我要添加到他们身边的“X”,它会删除某个注释,但我无法真正弄清楚如何识别由此创建的某个注释方法,更准确地说,我如何返回它的 id 以用于删除查询。 这是您可以检查它现在的样子的网站,下面我将附上我列出 cmets 的方式。提前致谢!
http://laszlovaszi.com/mx_agency/index.php
<?php
function confirm_query($result) {
if (!$result) {
die("Database query failed.");
}
}
function find_notes_by_id($user_id) {
global $connection;
$row = array();
$safe_user_id = mysqli_real_escape_string($connection, $user_id);
$query = 'SELECT content ';
$query .= 'FROM notes ';
$query .= 'WHERE user_id = '.$safe_user_id;
$result = mysqli_query($connection, $query);
confirm_query($result);
$final_data = array();
while($row = mysqli_fetch_assoc($result)){ // iterates over the result-set object to get all data
$final_data[] = $row; //assigns value to the array
}
return $final_data;
}
?>
<div class="notes text-center">
<?php
$notes_set = find_notes_by_id($userRow['id']);
if(empty($notes_set)){
echo "No notes have been posted for this user yet.";
} else {
echo "<div class=\"notelist text-left\">";
foreach($notes_set as $note){
echo "<div class=\"note text-left\">";
echo "● ";
echo htmlentities($note['content']);
echo "<br />";
echo "</div>";
}
echo "</div>";
}
?>
</div>
【问题讨论】:
-
警告:使用
mysqli时,您应该使用parameterized queries 和bind_param将用户数据添加到查询中。 不要使用手动转义和字符串插值或连接来完成此操作,因为如果您忘记正确转义某些内容,您将创建严重的SQL injection bugs。 -
你的意思是像笔记是我的对象吗? - 对不起,我只是一个初学者 :) 我还没有真正考虑过它们中的任何一个,因为首先我认为自己学习“硬编码”所有内容更聪明,这样我才能看透它适用于基础。
-
这就像从一个只有零件的车间开始学习驾驶,然后必须制造自己的汽车。如果你不知道汽车是什么样子或者它应该如何工作,你可能会建造一些其他的装置并学习很多基础知识,但仍然不知道如何开车穿过城镇。 ORM 会为你做很多繁重的工作,但你仍然可以在需要的时候低头弄脏。不要认为这是作弊。将其视为完成工作并在您想要时学习,而不是因为您必须这样做。
-
例如,Laravel 会自动为您做很多需要四五年才能完全吸收的东西:SQL、XSS、CSRF 保护、MVC 分离、数据库抽象、迁移, 等等。学习编码没有底线,最终你需要了解所有这些以及更多,但要及时。现在变得富有成效,你会觉得学习更多,而不是基础知识失败而几乎什么都做不了。保持高效,享受乐趣,并尽可能学习。享受吧!
标签: php mysql mysqli crud sql-delete