В настоящее время я создаю свое первое приложение PHP. Я хочу читать в автобусе время из файла csv и отсылать обратно пользователей следующего автобуса из своей резиденции в наш университет. Это моя первая попытка с PHP, так нежна:Неопределенное смещение: 0 в первом приложении PHP
<?php
// configuration
require("../includes/config.php");
if (!empty($_SESSION["id"]))
{
//lookup database entries for house
$users = query("SELECT * FROM users WHERE id = ?", $_SESSION["id"]);
if ($users === false)
{
apologize("Sorry, there was an error");
}
//lookup database entries for house
$residences = query("SELECT * FROM residences WHERE id = ?", $users[0]["residence"]);
if ($residences === false)
{
apologize("Sorry, there was an error");
}
//if user specified a residence in his profile
if($residences[0]["id"] != 0)
{
$times = array();
//if there is no bus today, in this case sat and sun
if(date("w", $timestamp) == 0 || date("w", $timestamp) == 6)
{
$times[0] = "There is no bus today";
}
//load the busplan for his residence
else
{
//open file and load in array if time is higher than date("His");
$timesList = file_get_contents($users[0]["residence"] . ".csv");
$nextbuses = explode(',', $timesList);
$hoursMins = date("Gi");
$num = 0;
for($i = 0; $i < count($nextbuses); $i++)
{
if($hoursMins < $nextbuses[$i])
{
$times[$num] = $nextbuses[$i];
$num++;
}
}
}
render("shuttle_show.php", ["title" => "Next Shuttle from your residence.", "times" => $times]);
}
}
Это использует функцию запроса:
function query(/* $sql [, ... ] */)
{
// SQL statement
$sql = func_get_arg(0);
// parameters, if any
$parameters = array_slice(func_get_args(), 1);
// try to connect to database
static $handle;
if (!isset($handle))
{
try
{
// connect to database
$handle = new PDO("mysql:dbname=" . DATABASE . ";host=" . SERVER, USERNAME, PASSWORD);
// ensure that PDO::prepare returns false when passed invalid SQL
$handle->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}
catch (Exception $e)
{
// trigger (big, orange) error
trigger_error($e->getMessage(), E_USER_ERROR);
exit;
}
}
// prepare SQL statement
$statement = $handle->prepare($sql);
if ($statement === false)
{
// trigger (big, orange) error
trigger_error($handle->errorInfo()[2], E_USER_ERROR);
exit;
}
// execute SQL statement
$results = $statement->execute($parameters);
// return result set's rows, if any
if ($results !== false)
{
return $statement->fetchAll(PDO::FETCH_ASSOC);
}
else
{
return false;
}
}
другие функции, которые она использует не релевантны, я думаю. Теперь я не могу показаться, чтобы найти, почему это продолжает производить:
Примечание: Undefined смещение: 0 в /Applications/MAMP/htdocs/html/shuttle.php на линии 16
Примечание: Undefined смещение: 0 в/Applications /MAMP/htdocs/html/shuttle.php на линии 22
соответствующие линии
$residences = query("SELECT * FROM residences WHERE id = ?", $users[0]["residence"]);
и
if($residences[0]["id"] != 0)
Поблагодарили бы за помощь! :)
Edit:
я передал тот же файл в моей системе Linux и без каких-либо изменений, которые я получаю vardump. Если я использую тот же vardump на MAMP на моем Mac, массив пуст. Теперь я получаю за:
var_dump($users);
array (size=1)
0 =>
array (size=5)
'id' => int 12
'username' => string 'frechdaxx' (length=9)
'mail' => string '*************@gmail.com' (length=23)
'hash' => string '$1$qr5axj4C$BET5zZGJza2DcHI8eD8fV0' (length=34)
'residence' => int 9573
Почему это проблема вообще? запрос функции работал с тем же самым синтаксисом до того, как я обратился к пользовательской таблице, и, как мы видим, он возвращает все остальные значения правильно.
Почему разница между моей средой? Массив пуст на моем сервере MAMP, но работает в Linux. Однако другие примеры кода с функцией запроса отлично работают в обеих средах.
- Почему большой int 9573? Значение в таблице равно 2.
В таких ситуациях * отлаживайте * свои результаты, например, используя это: 'echo '
';' – thaJeztahПолучает ли ваш запрос() результаты или создает только запрос к БД ??? запрос и получить результаты - это разные действия !!! – Svetoslav
Возможный дубликат [PHP: «Примечание: неопределенная переменная» и «Примечание: неопределенный индекс»] (http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index) –