检查mysql集中是否存在值,如果存在,则打印它

时间:2013-04-04 18:02:18

标签: php mysql set

我如何尝试检查mysql集中是否存在某个值?我有这段代码:

我正在尝试(我怀疑它会起作用)而且它正在抛出这个错误:

$result = mysql_query("SELECT * FROM posts ORDER BY time DESC");
while ($row = mysql_fetch_array($result)) {
    $result1 = mysql_query("SELECT * FROM friends WHERE friends = $row{'name'}");
    $row1 = mysql_fetch_array($result1);
    if ($row == 1) {
        echo "<b style='color: #D55292;'>".$row{'name'}."</b> says <br>".$row{'cont'}."<br><b style='color: #A1A1A1';>Posted on ".$row{'time'}."</b><br><br>";
    }
 }

我收到了这些错误:

Notice: Array to string conversion in C:\xampp\htdocs\index.php on line 44

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in        C:\xampp\htdocs\index.php on line 45

Notice: Array to string conversion in C:\xampp\htdocs\index.php on line 44

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\index.php on line 45

Notice: Array to string conversion in C:\xampp\htdocs\index.php on line 44

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\index.php on line 45

你们可以给我一些关于如何做到这一点的指示吗?先谢谢!

我只是觉得这个问题可能不够明确:

我有一套用于将所有“朋友”存储在我的“朋友”表中。我还有一个表,用于存储所有“帖子”,其中包含您的姓名,内容,时间以及可以查看的人员的值。我正在尝试获取这些帖子(我已成功完成)并打印出来。我能做到。我只是想这样做,所以你只能看到“name”值等于你的“friends”集中的字符串的帖子。

5 个答案:

答案 0 :(得分:1)

在这一行:

$result1 = mysql_query("SELECT * FROM friends WHERE friends = $row{'name'}");

$row{'name'}替换为{$row['name']}

$result1 = mysql_query("SELECT * FROM friends WHERE friends = {$row['name']}");

或者看起来你可能只是这样做:

$result1 = mysql_query("SELECT * FROM friends WHERE friends = {$row{'name'}}");

此外,您通过索引获得非常不寻常的价值。通常使用[]等括号。

答案 1 :(得分:1)

一些PHP错误: AFAIR不是{​​{1}}而是$row{'name'},你应该在字符串之外启动变量。 $row['name']

也是如此
$row{'cont'}

我不确定,为什么你需要$result = mysql_query("SELECT * FROM posts ORDER BY time DESC"); while ($row = mysql_fetch_array($result)) { $name = $row['name']; $result1 = mysql_query("SELECT * FROM friends WHERE friends = '$name'"); $row1 = mysql_fetch_array($result1); if ($row == 1) { echo "<b style='color: #D55292;'>".$row['name']."</b> says <br>".$row['cont']."<br><b style='color: #A1A1A1';>Posted on ".$row['time']."</b><br><br>"; } } 分别$result1,因为你没有在代码中使用它们。更好的解决方案是,如果你加入这两个表,那么你就不需要为每个帖子执行的第二个查询:

$row1

答案 2 :(得分:0)

您的第二个查询需要如下所示:$row['name']

$result1 = mysql_query("SELECT * FROM friends WHERE friends = '" . $row['name'] . "'");

答案 3 :(得分:0)

mysql_fetch_array()返回一个字符串数组。你不能写: -

$row1 = mysql_fetch_array($result1);

这就是它发出警告的原因: -

注意:第44行的C:\ xampp \ htdocs \ index.php中的数组到字符串转换

第二件事: -

$row{'name'} - &LT;这种语法错了。请改用$row['name']

答案 4 :(得分:0)

我不知道你是如何编码的,但这就是我如何实现你的代码试图做我认为它正在尝试做的事情。


$result = mysql_query("SELECT * FROM posts ORDER BY time DESC");

//use mysql_fetch_assoc instead of mysql_fetch_array. Makes more sense to me

while ($row = mysql_fetch_assoc($result)) {

    //Then instead or $row{'name'}, you use $row['name']
    $result1 = mysql_query("SELECT * FROM friends WHERE friends = $row{'name'}");
    $row1 = mysql_fetch_array($result1);
    if ($row == 1) {
        echo "".$row{'name'}." says 
".$row{'cont'}."
Posted on ".$row{'time'}."

"; } }

希望它有所帮助。