在PHP中查看/编辑/删除

在PHP中查看/编辑/删除,php,session,view,edit,Php,Session,View,Edit,我有一个系统,在这个系统中,用户必须注册并登录到我的网站来添加菜谱,在这个系统中,非注册用户和注册用户可以从前端查看菜谱。 到目前为止,我已经完成了注册页面、登录页面和“我的帐户”页面,供用户登录和提交食谱。一切正常,但现在我尝试在我的系统中添加另一项功能,用户可以编辑/删除他们自己的食谱。我登录的方式是创建一个保存用户名的会话,而不是将其输出到url中,如:www.cooking.com/my account.php?user_id=26 我想做同样的事情,但这次我想把菜谱存储在会话中,而不是

我有一个系统,在这个系统中,用户必须注册并登录到我的网站来添加菜谱,在这个系统中,非注册用户和注册用户可以从前端查看菜谱。 到目前为止,我已经完成了注册页面、登录页面和“我的帐户”页面,供用户登录和提交食谱。一切正常,但现在我尝试在我的系统中添加另一项功能,用户可以编辑/删除他们自己的食谱。我登录的方式是创建一个保存用户名的会话,而不是将其输出到url中,如:www.cooking.com/my account.php?user_id=26

我想做同样的事情,但这次我想把菜谱存储在会话中,而不是在url上显示菜谱id。我不知道该怎么做。我在mysql中有一个“启动器”表,其中包含以下字段:

username ()
recipename
ingredients
method
time
id
登录并希望编辑/删除已上载的配方后,将显示一个包含所有上载配方的表。我想要的是用户点击任何配方,它将带用户到另一个页面,允许用户编辑他们的东西

我试过了,但没有成功。以下是我在单击“编辑”后显示错误时使用的代码:

编辑启动器页面(editstarters.php)




您已上载以下启动器:


首先,不要在你的帖子标题中大喊大叫。没必要

其次,我们不需要一堵代码墙来显示所有内容,而实际唯一相关的部分是错误消息。这个特定的错误消息表示您的查询失败(可能是由于语法错误),这意味着
mysql\u query()
返回了它通常的布尔值FALSE,而您没有检查它。您将此false用作语句句柄,并试图从中获取一行,这导致了实际的错误消息

一般来说,永远不要假设数据库查询成功。即使查询字符串本身在语法上是100%有效的,也有许多其他原因会导致它失败

您的基本MySQL查询代码结构应该是:

$sql = "...";
$result = mysql_query($sql) or die(mysql_error());

这有利于调试/开发:如果查询失败,它将立即停止脚本并告诉您原因。对于生产代码,您希望使用更健壮的代码,而不是向用户发送一条长的SQL错误消息。

您在startersedited.php中调用
mysql\u query()

$result = mysql_query("SELECT * FROM starters WHERE username = '". $_SESSION['myusername']."' AND recipie_id='{$_GET['rec']}'");
返回布尔值FALSE,因为发生错误。无论何时调用
mysql\u query()
,都应该添加一些错误处理代码来处理此问题,例如:

$result = mysql_query("SELECT * FROM starters WHERE username = '". $_SESSION['myusername']."' AND recipie_id='{$_GET['rec']}'");
if($result === FALSE) {
    echo "Database Error: ".mysql_error() ;
    exit ;
}
$getrecipie = mysql_fetch_array($result);
以上内容可能对开发错误检查更有用,在生产站点中,您可能希望捕获错误并显示更优雅的内容


另外,我注意到您正在调用
require_once'../database.php'
包括“../database.php”。您不需要两者都需要,只需要第一个即可。

startersedited.php上的第55行是什么?你发布的代码只有48行。此外,您还面临着使用
$\u GET['rec']
的风险,因为您没有先对其进行清理或检查。这听起来像是mysql错误。尝试在查询后回显消息,以便我们可以调试更多。试试这个:mysql\u query(“…”)或die(mysql\u error());此外,“recipie_id”在查询中拼写错误,除非它在数据库中是相同的。贾斯汀·卢卡斯,谢谢你发现这个错误!现在可以了干杯伙计们谢谢你们的回复,我已经解决了这个问题。但是现在我有了出现在url中的php id…我如何隐藏它而不被显示?
$result = mysql_query("SELECT * FROM starters WHERE username = '". $_SESSION['myusername']."' AND recipie_id='{$_GET['rec']}'");
$result = mysql_query("SELECT * FROM starters WHERE username = '". $_SESSION['myusername']."' AND recipie_id='{$_GET['rec']}'");
if($result === FALSE) {
    echo "Database Error: ".mysql_error() ;
    exit ;
}
$getrecipie = mysql_fetch_array($result);