Сегодня я переписывал старую программу на PHP и использовал массивы для лучшей ее организации.
После его кодирования, когда я тестировал его, я понял, что массивы не сохраняют значения, как я ожидал.
(Я новичок в PHP)
Вот как я определил массивы:
/* Mysql settings */
$mysql = array();
$mysql['track'] = array();
$mysql['track']['visitors'] = array();
$mysql['track']['visitors']['query'] = "SELECT `uid`, `referer` FROM `track` WHERE (`time` >= '".$time['request']['start']."' AND `time` < '".$time['request']['end']."') GROUP BY `uid`";
Я использовал var_dum, чтобы увидеть, как значения были сохранены, и сделал запрос mysql:
var_dump($mysql['track']);
...
mysql_query($mysql['track']['visitors']['query']);
Вот вывод:
array(1) {
["query"]=>
string(71) "SELECT `request` FROM `track` WHERE (`time` >= '' AND `time` < '86400')"}
Query was empty
Может кто-нибудь сказать мне, почему это происходит?
Я неправильно использую массивы?
Как я должен использовать их для этой цели?
Ваш запрос хранится в массиве [‘query’] в соответствии с var dump, но ваш mysql_query использует [«track»]. Попробуйте переключить ваш запрос в массив [‘query’].
Также, пожалуйста, начните использовать mysqli вместо mysql, поскольку последнее устарело. Это старый код, как вы говорите, поэтому я не уверен, что вы знали, но я подумал, что скажу это по крайней мере.
Проблема была решена! Я упустил возможность увидеть, что позже в коде я использовал тот же массив $ mysql [‘track’], который удалял содержащиеся в нем значения!
Извините за невежество, наверняка я чему-то научился с этим.