【问题标题】:mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/virtua15/public_html/main/1515/dafreg.php on line 9 [duplicate]mysql_fetch_assoc():提供的参数不是第 9 行 /home/virtua15/public_html/main/1515/dafreg.php 中的有效 MySQL 结果资源 [重复]
【发布时间】:2012-03-14 06:37:36
【问题描述】:

可能重复:
mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in php
mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource

我正在使用两个 MYSQL 数据库,试图从它们中收集数据以插入到字段中以提交到另一个数据库。当我去使用 mysql_fetch_assoc() 进行查询时,它给了我一个错误。我做了一些研究,但找不到与我的问题真正相关的任何内容。我想知道我是否可以得到一些帮助。

<?php
$connect = mysql_connect("localhost","***********","*********") or die ("Couldn't Connect"); //host,username,password
mysql_select_db("virtua15_jo151") or die ("Could not find database");


$query = mysql_query("SELECT jos_comprofiler.firstname, jos_comprofiler.lastname, jos_users.username, jos_comprofiler.cb_country, jos_users.email FROM jos_users LEFT JOIN jos_comprofiler ON jos_users.id=jos_comprofiler.id WHERE jos_users.id = " . mysql_real_escape_string($id));


if ($row = mysql_fetch_assoc($query))
{
    $firstname = $row['firstname']; //This is whatever the field is called in your table
    $lastname = $row['lastname'];
    $loginname = $row['jos_users.username'];
    $country = $row['cb_country'];
    $email = $row['email'];

}

?>

下面是我可以包含的所有 HTML,如果需要,

【问题讨论】:

  • 你的sql错了。现在这个错误可以是任何东西......你必须彻底检查表名,列名。我建议你,在 phpmyadmin 中,只写查询的初始部分,看看它是否运行......然后添加 1 个联合语句,如果它运行,加入另一个。这样一来,即使您不知道错误在哪里,您也可以发现错误。
  • 请停止使用mysql_* 编写新代码,并学习使用PDO
  • 这是什么意思?为什么我不能按照自己的意愿编写代码。其次,我想知道为什么我因为这篇文章而失去了 4 个声望点。我来这里是想问一些关于如何处理 PHP 和其他事情的问题。在我在这里和互联网上进行研究并声称我在帖子中这样做之后,我不喜欢因为提出我不知道答案的问题而受到惩罚。
  • 这不是“不写你想要的代码”。这是关于对您的一些代码提出问题:(1)您的 SQL 错误(2)您的代码很丑(or die我的上帝,我的上帝!!)(3)如果您问一个问题,SQL 很糟糕,很丑代码,并且没有尝试理解好的建议(PDO 是正确且安全的方法),那么很抱歉,我们不会帮助您。
  • 请另一个建议:检查 mysql_xx 的样本:while(list($firstname, $lastname, $loginname, $country, $email)=mysql_fetch_array($sql)) {} 更易于阅读和维护。

标签: php mysql


【解决方案1】:

print mysql_error(); 查询检查有问题

检查查询。正确引用查询中分配的值。

$query = mysql_query("SELECT jos_comprofiler.firstname, jos_comprofiler.lastname,
         jos_users.username, jos_comprofiler.cb_country, jos_users.email 
         FROM jos_users LEFT JOIN jos_comprofiler ON jos_users.id=jos_comprofiler.id 
         WHERE jos_users.id ='".mysql_real_escape_string($id)."'");

【讨论】:

  • mysql_query 总是返回 resource,即使没有找到结果。如果返回false,则表示查询出错。在这种情况下,mysql_num_rows 会抱怨完全相同的事情。
  • 同意。更新了我的答案
猜你喜欢
  • 2012-09-16
  • 1970-01-01
  • 2012-01-03
  • 1970-01-01
  • 1970-01-01
  • 2011-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多