Php mysql_fetch_数组从简单表返回0

Php mysql_fetch_数组从简单表返回0,php,mysql,sql,pdo,mysqli,Php,Mysql,Sql,Pdo,Mysqli,我有一个名为setting的表 我想在keyequalregCharg中获取值: $result_gift = mysql_query("select value,key from setting WHERE key='regCharg'"); $result_gift_row = mysql_fetch_array($result_gift); $finance = (float)$result_gift_row[2] ; 但它返回0值,而不是1000 (我知道我

我有一个名为
setting
的表

我想在
key
equal
regCharg
中获取值:

    $result_gift = mysql_query("select value,key from setting WHERE key='regCharg'");
    $result_gift_row = mysql_fetch_array($result_gift);
    $finance = (float)$result_gift_row[2] ;

但它返回0值,而不是1000


(我知道我必须使用mysqli或PDO而不是mysql)。

您只从数据库返回两个字段。使用数组时,索引从0开始

数组将按照您在SQL查询中使用的顺序进行排序

因此,您需要使用
$result\u gift\u row[0]
返回字段值。
result\u gift\u row[1]
将返回键字段。

您仅从数据库返回两个字段。使用数组时,索引从0开始

数组将按照您在SQL查询中使用的顺序进行排序

因此,您需要使用
$result\u gift\u row[0]
返回字段值。
result\u gift\u行[1]
将返回键字段。

请尝试以下操作:

$finance = (float)$result_gift_row[1] ;
数组是从0索引的,因此您应该在索引1中找到第二列,请尝试以下操作:

$finance = (float)$result_gift_row[1] ;

数组是从0索引的,这就是为什么您应该在索引1中找到第二列的原因。您不能在查询中使用“裸体”:

$result_gift = mysql_query("select value,`key` from setting WHERE `key`='regCharg'");
                                         ^---^---
如果您的脚本中甚至有基本的错误处理,您可能会被告知语法错误:

   $result = mysql_query(...) or die(mysql_error());
                             ^^^^^^^^^^^^^^^^^^^^^^^
因为查询失败,返回了布尔值FALSE,然后在获取操作中使用了该布尔值FALSE,从而导致了进一步的失败,所以您得到的
0


执行数据库查询时,决不假定成功。始终假设失败,检查失败,并将成功视为惊喜。

关键字是保留字。您不能在查询中使用“裸体”:

$result_gift = mysql_query("select value,`key` from setting WHERE `key`='regCharg'");
                                         ^---^---
如果您的脚本中甚至有基本的错误处理,您可能会被告知语法错误:

   $result = mysql_query(...) or die(mysql_error());
                             ^^^^^^^^^^^^^^^^^^^^^^^
因为查询失败,返回了布尔值FALSE,然后在获取操作中使用了该布尔值FALSE,从而导致了进一步的失败,所以您得到的
0


执行数据库查询时,决不假定成功。始终假设失败,检查失败,并将成功视为惊喜。

首先:注意数组上的虚线下划线,这可能是sql保留字。第二:mysql_查询需要第二个参数(连接参数)。@ADASein连接参数是可选的@ADASein:
array
不是保留的,但“key”是保留的。首先:注意数组上的虚线下划线,这可能是sql保留字。第二:mysql_查询需要第二个参数(连接参数)。@ADASein连接参数是可选的@ADASein:
数组
不是保留的,但“key”是保留的。