好的,所以标题可能有点误导。我想做的是在我的网站上添加一个喜欢的系统。我有一列我最喜欢的东西,我设置了它,所以在每个项目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';
}
?>
非常感谢!我确信这里有很多错误,因为我很累。
您采用的方法效率极低,并且没有利用您使用数据库的事实。
(顺便说一句……我希望这只是示例代码;您的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为您代步。
(这个建议对于适度规模的设置来说是通用的。如果你需要处理数百万同时使用的用户,显然需要更多的优化,而传统的关系数据库可能甚至不适合。但我不认为这是你现在的处境。)
您可以将其分解为检查数组,如:
$yourArr = explode(":", $row['fav-itms']);
$checkFor = 232;
if(in_array($checkFor, $yourArr)) {
//it exists
}
else {
//does not exist
}
你的意思是这个吗
我知道这是不久前发布的,但当我搜索时它出现了。
我有一个数据库为我的投资组合存储信息,它保存图像的位置。
我正在创建一个页面来显示项目的完整视图。在页面中,我需要它来检查图像的列,如果有空的,我需要不显示任何内容。
我就是这么做的。
//连接,选择数据库,查询与页面相关的表。我已经查询了一个特定的行。
if($row[columnName1]){
echo '<div> displaying value </div>';
}
if($row[columnName2]){
echo '<div> displaying value </div>';
}
如果所选行中的columnName1有一个值,则显示div中的值,否则什么都不显示。然后转到第2列。
如果像这样
if(!$row[columnName1]){
//content displayed
}
并且该列不包含值,则将运行介于{}之间的内容。
按照我需要的方式工作,也许这会对某人有所帮助。