Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql查询问题,编码错误?_Php_Mysql_Select_Where Clause - Fatal编程技术网

Php mysql查询问题,编码错误?

Php mysql查询问题,编码错误?,php,mysql,select,where-clause,Php,Mysql,Select,Where Clause,我正在尝试执行以下PHP/MySQL查询,它对前两个组运行良好,但对其他所有人来说,我都遇到了一个MySQL错误,写得正确吗 $user =& JFactory::getUser(); $N = $user->get('name'); $username = $user->get('username'); $groups = $user->get('groups'); foreach($groups as $groupName=>$groupId) { }

我正在尝试执行以下PHP/MySQL查询,它对前两个组运行良好,但对其他所有人来说,我都遇到了一个MySQL错误,写得正确吗

$user =& JFactory::getUser();
$N = $user->get('name'); 
$username = $user->get('username');
$groups = $user->get('groups');

foreach($groups as $groupName=>$groupId)
{
}

$G=$groupName;

if ($G=="Management Staff")
    $result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead");
elseif ($G=="Website Developers")
    $result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead");
else
    $result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead WHERE createdby=$N");
当我以其他人的身份登录时,我得到:

警告:mysql\u fetch\u object():提供的参数不是C:\server2go\server2go\htdocs\chandlers\components\com\u jumi\views\application\view.html.php(38):eval()第87行的有效mysql结果资源

警告:mysql\u free\u result()希望参数1是资源,布尔值在C:\server2go\server2go\htdocs\chandlers\components\com\u jumi\views\application\view.html.php(38):eval()'d代码第132行

$result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead WHERE createdby=$N");
是可疑的,应该是

$result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead WHERE createdby='$N'");

确保,$N中没有任何邪恶的东西。

不确定这是否只是您将其复制/粘贴到stackoverflow中的拙劣工作,但看起来您的花括号都坏了。我想你会想要更像这样的东西:

$username = $user->get('username');
$groups = $user->get('groups');
foreach($groups as $groupName=>$groupId) {
  $G=$groupName;
  if ($G=="Management Staff")
    $result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead");
  elseif ($G=="Website Developers")
    $result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead");
  else
    $result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead WHERE     createdby=$N");
}
foreach($groups as $groupName=>$groupId) {}
因此,您的foreach循环实际上执行它下面的代码。粘贴到问题中的代码有一个for-each循环,该循环不执行任何内容,因为它是这样编写的:

$username = $user->get('username');
$groups = $user->get('groups');
foreach($groups as $groupName=>$groupId) {
  $G=$groupName;
  if ($G=="Management Staff")
    $result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead");
  elseif ($G=="Website Developers")
    $result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead");
  else
    $result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead WHERE     createdby=$N");
}
foreach($groups as $groupName=>$groupId) {}
然后继续尝试在循环外部使用foreach循环中的一个变量:

$G=$groupName;
if ($G=="Management Staff")
...

这将不起作用,因为
$groupName
变量将仅在
foreach
循环的范围内设置。

错误引用的对
mysql\u fetch\u对象的调用在哪里?在上面的代码片段中,我没有看到对
mysql\u fetch\u object
的调用。它是否位于
$result
上的此块之后?如果是这样的话,
$result
似乎没有被设置。在SQL查询中直接使用PHP变量肯定不是一种好的做法,它会让您面临SQL注入的可能性。此外,mysql_*函数已经不受欢迎,mysqli或PDO是目前与数据库接口的首选方法。我只是一个初学者,因此不确定是否有其他方法,除了在sql中手动声明用户名之外,我如何声明只加载特定用户的记录?谢谢,这是现在的工作,只显示由该用户创建的结果应该如何,谢谢:-),我会接受你的答案,当它允许我的时刻。