-3

我将如何尝试检查 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

你们能给我一些关于我将如何去做的指示吗?提前致谢!

我只是觉得这个问题可能不够清楚:

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

4

5 回答 5

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'}}");

此外,你有非常不寻常的按指数取值的风格。通常括号[]用于那个。

于 2013-04-04T18:06:25.233 回答
1

一些 PHP 错误:AFAIR 不是$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更好的解决方案是,如果您加入这两个表,这样您就不需要为每个帖子执行的第二个查询:

 $sql = "SELECT post.time, friends.name, ... 
           FROM post 
           JOIN friends on post.name = friends.name 
       ORDER BY post.time DESC";
于 2013-04-04T18:06:52.623 回答
0

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

$result1 = mysql_query("SELECT * FROM friends WHERE friends = '" . $row['name'] . "'");
于 2013-04-04T18:06:19.020 回答
0

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

$row1 = mysql_fetch_array($result1);

这就是为什么它给出这个警告: -

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

第二件事:-

$row{'name'}-< 这个语法是错误的。改为使用$row['name']

于 2013-04-04T18:08:17.893 回答
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'}."

"; } }

希望能帮助到你。

于 2013-04-04T18:09:17.453 回答