php的SQL查询与数据库的直接SQL查询

php的SQL查询与数据库的直接SQL查询,php,sql,Php,Sql,在SQL管理器(sqlite管理器)上执行以下查询 返回预期值,ip地址='aaaa::c30c:0:0:4' 从php代码执行相同的查询,如下所示 $db=open_database(); $query = $db->exec('SELECT ip FROM objects WHERE name="machine4"'); echo $query; 返回值1 我对php的了解有什么闪失吗 p、 s:我确信查询执行时没有错误,它们访问的数据库引用的是同一个元素。只返回受

在SQL管理器(sqlite管理器)上执行以下查询

返回预期值,ip地址='aaaa::c30c:0:0:4'

从php代码执行相同的查询,如下所示

  $db=open_database();
  $query = $db->exec('SELECT ip FROM objects WHERE name="machine4"');   
  echo $query;
返回值1

我对php的了解有什么闪失吗


p、 s:我确信查询执行时没有错误,它们访问的数据库引用的是同一个元素。

只返回受影响的行数 所有方法

已解决

首先,我需要一个对象来获取值,为此,exec不会返回一个对象,而是返回前面提到的行数。而来自php的命令有一个要获取的对象

这是应用于SQLITE3数据库的查询的答案:

$db=open_database();
$query = $db->query('SELECT ip FROM objects WHERE name="machine4"');
if(!$query){
   echo $db->lastErrorMsg();
} else {
   $ip=$query->fetchArray(SQLITE3_ASSOC);
   return $ip['ip']; 

它返回1,因为您没有使用某种形式的获取循环。或者,我没有抓住这个问题吗?你在寻找能阻止注射的东西还是
aaaa::c30c:0:0:4
?如果是SQL注入预防,请使用准备好的语句。正在使用哪个DB库?什么是mysqli连接对象?我猜,PDO。仅仅阅读文档真的有那么难吗?不确定您使用的是什么DB管理库扩展,但几乎每个数据库都会将结果集返回到
query()
exec()
类型的命令。然后,您需要使用该结果集(即
fetch_*()
)从结果集中获取数据。感谢您的快速回答。文档中有答案。我假设执行人员将返回查询,并查看带有插入的示例。对于初学者来说,这是一个基本错误!这个答案最好作为注释(不过,我知道你要到50分才能发表评论)。要想得到一个好的答案,你应该添加一些额外的解释和一个简单的工作示例。
$db=open_database();
$query = $db->query('SELECT ip FROM objects WHERE name="machine4"');
if(!$query){
   echo $db->lastErrorMsg();
} else {
   $ip=$query->fetchArray(SQLITE3_ASSOC);
   return $ip['ip'];