2013-04-04 142 views
-3

我该如何去尝试检查某个值是否存在于mysql集合中?我有这样的代码:检查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 

你能大家给我一些关于如何去做这件事的指针?先谢谢了!

我只是想这个问题可能还不够明确:

我有一组存储您所有的“朋友”在我的“朋友”表。我还有一个表格,用于存储所有“帖子”的名称,内容,时间以及谁可以查看它的值。我试图让这些帖子(我已经成功完成),并打印出来。我可以做到这一点。我只是想做到这一点,所以你只能看到“名称”值等于你的“朋友”组中的字符串的帖子。

+0

我想第一个错误是在$ result1,试试这个 $ result1 = mysql_query(“SELECT * FROM friends WHERE friends =”。$ row ['name']) – Mat 2013-04-04 18:05:44

回答

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"; 
+0

让我看看... – Beaurocks16 2013-04-04 18:07:49

+0

谢谢,该工程,我只是有这个错误: – Beaurocks16 2013-04-04 18:08:49

+0

警告:mysql_fetch_array()期望参数1是资源,布尔给出在第45行 – Beaurocks16 2013-04-04 18:09:10

0

你的第二个查询需要看起来像这样:$row['name']

$result1 = mysql_query("SELECT * FROM friends WHERE friends = '" . $row['name'] . "'"); 
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'}}"); 

除此之外,你有非常不同寻常的价值指数的风格。通常使用括号如[]

0

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

$row1 = mysql_fetch_array($result1); 

这就是为什么它给人这样的警告: -

声明:Array对C字符串转换:\ XAMPP \ htdocs中\的index.php上线44

第二件事: -

$row{'name'} - <此语法错误。改为使用$row['name']

+0

疯狂,但语法正确)即使它是不寻常的。从来不知道它可能工作,但只是试了一下。 http://au.php.net/manual/en/language.types.array.php#99015 – 2013-04-04 18:12:13

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'}."

"; } }

希望它有帮助。

相关问题