好的,标题可能会有点误导。我想要做的是在我的网站上添加一个喜欢的系统。我有一列我最喜欢的东西,我设置了它,所以在每个项目ID之后有一个:
。如果它包含1345:13456:232:524378:324
,如何检查从我的数据库(232
)返回的字符串?如果确实如此,我会回复preRend
否则我会回显insert
并插入该ID后跟:
。这就是我到目前为止所做的:
<?php
session_start();
require_once(".conf.php");
$logged = $_SESSION['logged'];
$user = $_SESSION['user'];
$fwdfav = $_POST['id'];
$query = mysql_query("SELECT * FROM accountController WHERE user='$user'");
if ($logged == 1)
{
while ($row = mysql_fetch_array($query)) {
if ($row['fav-itms'] //This is where I got stuck. How to check if it contains a value.)
{
mysql_query("INSERT INTO accountController ('fav-itms') VALUES ('$fwdfav')");
echo 'inserted';
}
else
{
echo 'preRend';
}
}
}
else
{
echo 'nlog';
}
?>
非常感谢你!我确信这里有很多错误,因为我很累。
答案 0 :(得分:2)
您采用的方法效率极低,并且没有利用您使用数据库这一事实。
(顺便说一下......我希望这只是示例代码;您的INSERT查询中有一个巨大的SQL注入漏洞。)
我要做的是创建第二个表格,如下所示:
favorites (
id int(11) NOT NULL auto_increment,
user_id int(11),
fav_id int(11)
)
让每行代表用户最喜欢的一对。然后,你可以让MySQL尽一切努力弄清楚用户是否已经收藏了某些东西,例如,
SELECT COUNT(*) FROM favorites WHERE user_id = %d AND fav_id = %d;
// Substitute the actual look-up values in using prepared statements
您也可以同样快速获取用户的实际收藏夹等。
请记住,数据库的设计目的是为了快速存储和查找信息。 PHP是一种通用编程语言。在可能的情况下,让MySQL为您行走。
(这个建议适用于中等规模的设置。如果你需要处理数百万的并发用户,显然需要更多的优化,而传统的关系数据库可能甚至不适合。但我不会得到这样的印象你现在在哪里。)
答案 1 :(得分:1)
您可以在数组中将其作为支票进行爆炸,例如:
$yourArr = explode(":", $row['fav-itms']);
$checkFor = 232;
if(in_array($checkFor, $yourArr)) {
//it exists
}
else {
//does not exist
}
你的意思是什么
答案 2 :(得分:0)
我知道这是在不久前发布的,但是当我进行搜索时就出现了。
我有一个存储我的投资组合信息的数据库,它包含图像的位置。
我正在一个页面上显示项目的完整视图。在页面中,我需要它来检查图像的列,如果有空,我需要它不显示任何内容。
我就是这样做的。
//连接,选择数据库,查询与页面相关的表格。我已经对特定行进行了查询。
if($row[columnName1]){
echo '<div> displaying value </div>';
}
if($row[columnName2]){
echo '<div> displaying value </div>';
}
发生了什么,如果所选行中的columnName1有值,则显示div中的值,否则为什么。然后到第2栏。
如果这样做
if(!$row[columnName1]){
//content displayed
}
并且该列不包含值,然后将运行{}之间的内容。
以我需要的方式工作,也许这会对某人有帮助。