以下内容传递给浏览器:http://localhost/like.php?f=1
其中f = 1是我想要的文章ID。有一个用户系统,我只希望他们能够喜欢这篇文章一次(原因很明显)。我的代码,从数据库中提取有关文章的信息,然后提取用户信息(从当前会话中获取ID)然后检查用户是否已经喜欢这个,如果没有插入到类似的数据库中,或者返回文章页面。这是我到目前为止的代码..
正如您在代码中看到的那样,我一直在尝试调试,但它进展不顺利......
<?php
include "connect.php";
session_start();
$feed = $_GET['f'];
$feeddb = "SELECT * from feeddb where ID=$feed";
$feeddb2 = mysql_query($feeddb) or die("Whuuut?");
$feeddb3 = mysql_fetch_array($feeddb2);
if (isset($_SESSION['usrname']))
{
$player=$_SESSION['usrname'];
$userstats="SELECT * from feedus where tit='$player'";
$userstats2=mysql_query($userstats) or die("Could not get user stats");
$userstats3=mysql_fetch_array($userstats2);
$feedli = "SELECT * from feedli where PID=$feed";
$feedli2 = mysql_query($feedli) or die("Could not get likes");
while($feedli3=mysql_fetch_array($feedli2))
{
if($userstats3['ID'] == $feedli3['UID'])
{
echo $userstats3[ID];
echo $feedli3[UID];
} else {
$updatelike =
"INSERT into feedli (PID, UID) values('$feed','$userstats3[ID]')";
$updatelike2 = mysql_query($updatelike);
echo $userstats3[ID];
echo $feedli3[UID];
}
}
}
else
{
}
?>
任何帮助将不胜感激!
编辑:对于Clarity - 我希望代码在表FEEDLI中插入PID($ feed中的文章ID)和UID($ userstats3 [ID]中的用户ID),如果他们没有之前喜欢这篇文章,如果有的话,请跳过代码并返回上一篇文章。
答案 0 :(得分:1)
我认为您在代码中没有使用$ feeddb3 ..这可能很有用。也尽量避免sql注入。
<?php
session_start();
include "connect.php";
$feed = $_GET['f'];
if (isset($_SESSION['usrname']))
{
$player=$_SESSION['usrname'];
$userstats2=mysql_query("SELECT * from feedus where tit='".mysql_real_escape_string(stripslashes($player))."'") or die("Could not get user stats");
$userstats3=mysql_fetch_array($userstats2);
$feedli2 = mysql_query("SELECT * from feedli where PID='".mysql_real_escape_string(stripslashes($feed))."' AND UID = '".$userstats3['ID']."'");
if(!mysql_num_rows($feedli2))
{
$updatelike2 = mysql_query("INSERT into feedli (PID, UID) values('".mysql_real_escape_string(stripslashes($feed))."','".mysql_real_escape_string(stripslashes($userstats3['ID']))."')");
echo $userstats3['ID'];
}
else
{
echo "already liked";
}
}
?>
答案 1 :(得分:0)
在执行insert-query $updatelike = "INSERT into feedli (PID, UID) values('$feed','$userstats3[ID]')";
之前,您应该检查是否存在带有传输的PID和UID的数据集。如果有的话,什么都不做......如果没有,执行插入。
我希望,我没有误解你的问题。
答案 2 :(得分:0)
首先,您可能希望为变量赋予更多有意义的名称 - 只是提示可读性的提示。另外,请注意可能的SQL注入!
其次,如上所述,您可以通过检查您的likes表中是否存在元组(user_id,feed_id)以更快的方式执行此操作。虽然你可以合并feedli2和userstats2查询,但我已经停止写了,因为上面应该可以正常工作。