當預期有許多結果時,我從MySQL數據庫獲得1個結果。PHP MYSQLI返回一行而不是很多
看看下面,你將看到的mysqli對象有NUM_ROWS = 42,但我只得到1分的結果,當我的print_r的fetch_array(MYSQLI_ASSOC)
調試響應:
SELECT * from edi_packets_to_send WHERE `send` = 't' AND `network_id` = '8012'
mysqli_result Object
(
[current_field] => 0
[field_count] => 13
[lengths] =>
[num_rows] => 42
[type] => 0
)
Array
(
[id] => 413
[packet] => 02 07 00 01 ff 14 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[priority] => 4
[send] => t
[seq] =>
[network_id] => 8012
[times] => 2014-06-23 22:52:28
[termostat_location] => 0007
[packet_type] => 14
[no_of_attemps] => 4
[network_network_id] => 61
[cms_room_id] => 157
[action_code] => 4
)
我的代碼:
<pre>
<?php
define('DB1_HOSTNAME','localhost');
define('DB1_USERNAME','xxxxxxx');
define('DB1_PASSWORD','xxxxxxx');
define('DB1_DATABASE','xxxxxxx');
define('DB1_PORT','3306');
/* DB connection */
$db = mysqli_connect(DB1_HOSTNAME, DB1_USERNAME, DB1_PASSWORD, DB1_DATABASE);
if (mysqli_connect_errno($db)) {throw new exception("Failed to connect to MySQL: " . mysqli_connect_error());}
$sql = "SELECT * from edi_packets_to_send WHERE `send` = 't' AND `network_id` = '8012' ";
echo "<br>".($sql)."<br><br>";
if(!$results = $db->query($sql)){throw new Exception("SQL Failed ".__file__." on line ".__line__.":\n".$sql."\n".mysqli_error($db));}
print_r($results);
if ($results->num_rows > 0){
$array = $results->fetch_array(MYSQLI_ASSOC);
print_r($array);
}
數據庫TA竹葉提取:
DROP TABLE IF EXISTS `edi_packets_to_send`;
CREATE TABLE `edi_packets_to_send` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`packet` varchar(249) DEFAULT NULL,
`priority` int(11) DEFAULT NULL,
`send` varchar(15) DEFAULT NULL,
`seq` varchar(6) DEFAULT NULL,
`network_id` int(11) DEFAULT NULL,
`times` datetime DEFAULT NULL,
`termostat_location` varchar(12) DEFAULT NULL,
`packet_type` varchar(6) DEFAULT NULL,
`no_of_attemps` int(11) DEFAULT NULL,
`network_network_id` int(11) DEFAULT NULL,
`cms_room_id` int(11) DEFAULT NULL,
`action_code` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`),
KEY `priority` (`priority`),
KEY `cms_room_id` (`cms_room_id`),
KEY `network_id` (`network_id`),
KEY `network_network_id` (`network_network_id`),
KEY `send` (`send`),
KEY `action_code` (`action_code`)
) ENGINE=InnoDB AUTO_INCREMENT=413 DEFAULT CHARSET=utf8;
INSERT INTO `edi_packets_to_send` VALUES ('413', '02 07 00 01 ff 14 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff', '4', 't', null, '8012', '2014-06-23 22:52:28', '0007', '14', '4', '61', '157', '4');
INSERT INTO `edi_packets_to_send` VALUES ('414', '02 07 00 01 ff 1e ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff', '5', 't', null, '8012', '2014-06-23 22:10:25', '0007', '1e', '1', '61', '157', '5');
INSERT INTO `edi_packets_to_send` VALUES ('415', '02 07 00 01 ff 1f ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff', '111', 't', null, '8012', '2014-06-23 22:05:30', '0007', '1f', '1', '61', '157', '111');
INSERT INTO `edi_packets_to_send` VALUES ('416', '02 07 00 01 ff 32 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff', '18', 't', null, '8012', '2014-06-23 22:09:19', '0007', '32', '1', '61', '157', '18');
INSERT INTO `edi_packets_to_send` VALUES ('417', '02 07 00 01 ff 0a ff ff 00 ff ff ff ff ff 05 14 05 1e 3c 1e 00 01 00 3e 0a 37 ff ff', '20', 't', null, '8012', '2014-06-23 22:07:57', '0007', '0a', '1', '61', '157', '20');
INSERT INTO `edi_packets_to_send` VALUES ('418', '02 07 00 01 ff 0b 0a 52 4c 40 4d 01 01 ff ff ff ff ff ff ff ff ff ff ff ff ff ff', '21', 't', null, '8012', '2014-06-23 22:07:24', '0007', '0b', '1', '61', '157', '21');
INSERT INTO `edi_packets_to_send` VALUES ('419', '02 07 00 01 ff 32 ff 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff', '90', 't', null, '8012', '2014-06-23 22:06:11', '0007', '32', '1', '61', '157', '90');
INSERT INTO `edi_packets_to_send` VALUES ('420', '02 08 00 01 ff 14 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff', '4', 't', null, '8012', '2014-06-23 22:11:14', '0008', '14', '1', '61', '158', '4');
INSERT INTO `edi_packets_to_send` VALUES ('421', '02 08 00 01 ff 1e ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff', '5', 't', null, '8012', '2014-06-23 22:10:08', '0008', '1e', '1', '61', '158', '5');
INSERT INTO `edi_packets_to_send` VALUES ('422', '02 08 00 01 ff 1f ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff', '111', 't', null, '8012', '2014-06-23 22:05:13', '0008', '1f', '1', '61', '158', '111');
INSERT INTO `edi_packets_to_send` VALUES ('423', '02 08 00 01 ff 32 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff', '18', 't', null, '8012', '2014-06-23 22:09:03', '0008', '32', '1', '61', '158', '18');
任何想法,爲什麼這個特定的查詢是不是我正常工作?
PS:我運行它在本地主機上的Windows IIS 7.5 PHP版本28年3月5日(DEV)
你只是執行fetch_array()一次,所以它只會取一排....執行fetch_array()在循環中獲取所有ROWA –
['fetch_all '](http://www.php.net//manual/en/mysqli-result.fetch-all.php)提取所有行。 – showdev