Php 从MySql检索联接数组
我使用以下代码从数据库中提取一个联接查询:Php 从MySql检索联接数组,php,mysql,join,mysqli,Php,Mysql,Join,Mysqli,我使用以下代码从数据库中提取一个联接查询: $query = 'SELECT `profiles`.`city`, `users`.`first_name`, `users`.`last_name`' . ' FROM profiles, users' . ' WHERE ((`profiles`.`user_id` = 3) AND (`users`.`user_id` = 3))' . ' LIMIT 1'; $result = $c
$query = 'SELECT `profiles`.`city`, `users`.`first_name`, `users`.`last_name`'
. ' FROM profiles, users'
. ' WHERE ((`profiles`.`user_id` = 3) AND (`users`.`user_id` = 3))'
. ' LIMIT 1';
$result = $connection -> query($query);
$arr = $result -> fetch_array();
$feedback = $arr;
$result -> close();
return $feedback;
这不是我的最终代码,这只是测试我加入的初步步骤
查询似乎工作正常,它提取了我需要的一行信息,但我注意到,当我var_dump
it时,它将数组放入两个不同的索引中,一个数字索引和一个db字段名称的索引。下面是var\u dump
的样子:
array(6) { [0]=> string(4) "Reno" ["city"]=> string(4) "Reno" [1]=> string(4) "John" ["first_name"]=> string(4) "John" [2]=> string(3) "Doe" ["last_name"]=> string(3) "Doe" }
这实际上使我的查询结果的大小增加了一倍。对于一行来说,这没什么大不了的,但是如果/当我开始使用相同的方法绘制多个记录时,将结果的大小加倍可能会很昂贵
我尝试了一个foreach
循环:
foreach ($arr as $key=>$value) {
$feedback[$key] = $value;
}
但它留给我同样的结果。我是否做错了什么,如果是,我该如何纠正它,或者这是正常的
感谢您的帮助mysqli_result::fetch_array()的默认结果类型是mysqli_BOTH
,这意味着您可以同时获得命名和数字结果数组索引(请参阅)
尝试改用。要减小大小,您需要查看mysql\u fetch\u数组的第二个可选参数。这里记录了这一点: 您可以指定是否只需要数字索引或关联数组。如果使用fetch row(http://www.php.net/manual/en/mysqli-result.fetch-row.php)你将不带姓名取回。我想这就是你要找的,对吗
编辑:这也适用于mysql,但函数是mysql\u fetch\u row($result),而不是mysqli“默认mysql获取模式”--嗯,什么?太棒了!谢谢你的快速回复!工作完美。只要它允许我就接受它!我放入
fetch\u数组(MSQL\u ASSOC)
并work@zerkms你能告诉我更喜欢PDO(取回模式)吗?我已经纠正了错误semantics@Phil:我指的是mysql
vsmysqli
实际上;-)mysql
本身没有任何获取模式或结果类型defaults@zerkms当然有。看,第二个argint$result\u type=MYSQL\u都是
谢谢,但是不,我应该指定,尽管菲尔击中了它的头部;我想返回结果的\u ASSOC
部分-这将使我更容易知道我的值在哪里。