从数据库中选择列数据(要转换为数字吗?)

时间:2019-05-16 22:26:19

标签: php mysql

我需要能够比较列中的值,而不是值在列中出现的次数。 我有多个表,它们都具有相同的20列“标题”条目,但另一列“ position_order”是数字的不同值。 我有一个具有“正确”值的基表,我想遍历“标题”列中的每个名称,并计算它们的“ position_order”与我的基本案例表的“ position_order”之间的差异

我相信所有功能都可以正常运行,但是当我查询数据库以查找由于某种原因而为“ position_order”列存储的值时,它将不会作为我可以进行计算的数字返回。

imfile

这是错误日志

  

[2019年5月16日22:19:48 UTC] PHP注意:类mysqli_result的对象无法在第75行的/Applications/MAMP/htdocs/user.php中转换为数字

2 个答案:

答案 0 :(得分:0)

请参阅mysqli_query的文档:https://www.php.net/manual/en/mysqli.query.php

  

返回值

     

对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询,mysqli_query()将返回mysqli_result对象。对于其他成功的查询,mysqli_query()将返回TRUE。

$position1$position2是对象实例,而不是数据库中的字段。从来没有永远使用过mysqli,但您可能想改用fetch_all

答案 1 :(得分:0)

此:

$result = $mysqli->query($sql1);
if ( ! $result ) {
   throw new Exception('Query 1 failed');
}

返回一个mysqli_result对象,而不是一个数字。您必须从中提取实际结果。

if ( $result->num_rows ) {
    $row = $result->fetch_assoc();
    $position1 = $row['position_order'];
}
$result->close();

$result = $mysqli->query($sql2);
if ( ! $result ) {
   throw new Exception('Query 2 failed');
}

if ( $result->num_rows ) {
    $row = $result->fetch_assoc();
    $position2 = $row['position_order'];
}
$result->close();
if ( isset($position1) && isset($position2) ) {
   $abs = abs($position1-$position2);
} else {
   $abs = null;
}

// output here