Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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\u num\u rows():提供的参数不是有效的mysql结果资源_Php_Mysql_Fetch - Fatal编程技术网

Php 警告:mysql\u num\u rows():提供的参数不是有效的mysql结果资源

Php 警告:mysql\u num\u rows():提供的参数不是有效的mysql结果资源,php,mysql,fetch,Php,Mysql,Fetch,可能重复: 我收到以下代码的错误消息(位于查询末尾): 警告:mysql\u num\u rows():已提供 参数不是有效的MySQL结果 上../view-ind-order.php中的资源 第28行 该脚本用于检索订单(从列出订单表中所有订单id行的页面)、订单内容、订购用户和产品信息。我认为我得到的错误是订单中有不止一种产品,但我不太清楚哪里出了问题。(标头具有会话启动命令) 显然,查询导致了错误: $result = mysql_query ($query) or trigger_

可能重复:

我收到以下代码的错误消息(位于查询末尾):

警告:mysql\u num\u rows():已提供 参数不是有效的MySQL结果 上../view-ind-order.php中的资源 第28行

该脚本用于检索订单(从列出订单表中所有订单id行的页面)、订单内容、订购用户和产品信息。我认为我得到的错误是订单中有不止一种产品,但我不太清楚哪里出了问题。(标头具有会话启动命令)


显然,查询导致了错误:

 $result = mysql_query ($query) or trigger_error(mysql_error(),E_USER_ERROR);

echo
返回错误以找出问题的原因

Change
$result=@mysql\u query($query)

看看你有没有错误

编辑:

在oc.price之后和prd.products\u id之前缺少一个逗号。请按如下方式更改查询:

$query = "SELECT us.users_id, us.users_first_name, us.users_surname, us.users_business, 
             ord.order_id, ord.users_id, ord.total, ord.order_date,  
             oc.oc_id, oc.order_id, oc.products_id, oc.quantity, oc.price/*here*/,/**/
             prd.products_id, prd.products_name, prd.price      
         FROM users AS us, orders AS ord, order_contents AS oc, products AS prd  
         WHERE ord.order_id=$id
         AND us.users_id = ord.users_id
         AND ord.order_id = oc.order_id
         AND oc.products_id = prd.products_id    
         ";

您的sql中可能有错误

展示它:


在调用
mysql\u num\u rows()
(通常在
mysql\u query()
之后)之前,需要检查
$result
是否有效,否则会出现此错误

但是,如果
$result
不是有效的资源,则表示查询失败,因此问题出现在
mysql\u num\u rows()
之前

我注意到您正在使用
@
来抑制
mysql\u query()
引发的任何错误。为什么要这样做?如果您从中得到错误,您需要(a)了解它,以及(b)修复它。那里的一个错误意味着你的SQL查询有bug——你应该在做任何事情之前调查这个问题,因为这才是你真正的问题所在

通过使用
mysql\u error()
函数,您可以找到由
mysql\u query()
引发的错误。它将告诉您查询有什么问题。(乍一看,查询看起来不错,但很容易拼写错误字段名,或者字段的表前缀错误,等等;您需要查看错误响应以确定问题所在)


顺便说一句,
是数字的
并不能很好地检查输入是否有效:它可以为查询失败的值返回true(例如科学指数格式的数字、十进制值等)

在继续使用结果之前,不应抑制错误消息或至少检查查询结果是否为false:

if (!$result)
{
  // error
}
else
{
  // use results
}

首先:您是否在MySQL环境(如MySQL查询浏览器)中尝试了该请求,以了解该请求是否正确,以及该请求是否返回结果


第二:您不能使用普通的mysql\u查询功能将请求发送到您的mysql服务器吗?

这可能意味着您的mysql查询中有错误。将
@mysql\u query($query);
行更改为类似于
@mysql\u query($query)或die(mysql\u error())
您的SELECT语句(变量$query)可能有错误。请尝试隔离SELECT语句,例如
$result=mysql\u query($query)或die(mysql\u error())
来找出它的错误。我得到了这样一个信息“您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以了解使用near.products\u id,prd.products\u name,prd.price FROM users AS us,orders AS o”,在第4行,在oc.price之后和prd.products\id之前加一个逗号。好消息:它重试了在订购一个产品时删除订单。坏消息:如果有多个订单,则会显示“此页面访问错误”。这意味着返回了多行(订单包含多个产品).从您的查询中,我发现只有当一个订单正好有一个产品时,它才会显示。否则它会给您显示该消息。我从查询中删除了“==1”,这很有效,感谢您的帮助Parkyprg和所有其他响应者!
$query = "SELECT us.users_id, us.users_first_name, us.users_surname, us.users_business, 
             ord.order_id, ord.users_id, ord.total, ord.order_date,  
             oc.oc_id, oc.order_id, oc.products_id, oc.quantity, oc.price/*here*/,/**/
             prd.products_id, prd.products_name, prd.price      
         FROM users AS us, orders AS ord, order_contents AS oc, products AS prd  
         WHERE ord.order_id=$id
         AND us.users_id = ord.users_id
         AND ord.order_id = oc.order_id
         AND oc.products_id = prd.products_id    
         ";
if (!mysql_query($query, $link)) {
    echo mysql_errno($link) . ": " . mysql_error($link) . "\n";
}
if (!$result)
{
  // error
}
else
{
  // use results
}