2013-05-04 2 views
-1

Прежде всего, я начинающий веб-разработчик.Может ли PHP 5.4 работать на настроенном PHP-сервере

Мой вопрос: «Веб-сайт, разработанный с помощью PHP 5.4, может работать на настроенном PHP-сервере?»

(Подробное описание) Я настраиваю Apache 2.4, MySQL 5.6 и PHP 5.4.12 на Windows. Все хорошо. Но ошибки возникают, когда я сменил папку своего веб-сайта на другую машину, настроенную с помощью WAMPserver. Этот WAMPserver настроен с Apache 2.2.11, PHP 5.3 и MySQL 5.1.36.

Я устанавливаю MySQL 5.6 на этом компьютере, и база данных успешно подключена. Но «ошибка синтаксического анализа происходит в коде», такие как

$country = mysql_fetch_row(queryMySQL("----"))[0];

Кроме того, он показал другие ошибки, такие как «Table„emp.productcateogry“не существует».

Пожалуйста, дайте мне несколько предложений.

+1

PHP 5.3.x не поддерживает доступ к выводам массива при вызове функций - таким образом, ошибка. – Jon

+0

Все, что я знаю, это то, что объединение старой версии с новой версией и ожидание ее работы отрывочно. – SchautDollar

+0

Существует ** больше поддержки ** для 'mysql_ *' функций, они [** официально устарели **] (https://wiki.php.net/rfc/mysql_deprecation), ** больше не поддерживаются ** и будет [** удален **] (http://php.net/manual/en/function.mysql-connect.php#warning) в будущем. Вы должны обновить свой код с помощью [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/msqli), чтобы обеспечить функциональность вашего проекта в будущем. – Arjan

ответ

1

Короткий ответ: нет, вы не должны этого ожидать, особенно если используете код new features PHP 5.4 в вашем коде.

Специфическая ошибка, которую вы имеете в виду с:

ошибка парсинга происходит в коде

потому, что линия

$country = mysql_fetch_row(queryMySQL("----"))[0]; 

использует новую функцию:

Fun фикция массив разыменования

, которые до PHP 5.4, пришлось использовать временную переменную для того, чтобы получить доступ к определенному индексу возвращения, то есть:

$country_temp = mysql_fetch_row(queryMySQL("----")); 
$country = $country_temp[0]; 

Теперь, в том, что вы новичок разработчик, есть несколько вещей, которые вы должны отметить. Первое и самое важное существо, что mysql_ функции deprecated дает примечание:

Это расширение устаревшим PHP 5.5.0, и будут удалены в будущем. Вместо этого следует использовать расширение MySQLi или PDO_MySQL.

Другими словами, используйте PDO если хочет использовать подготовленные заявления, или MySQLi если нет. Другим преимуществом использования PDO и получением только одного столбца, как вы в примере кода, является то, что после подключения вы можете использовать функцию PDOStatement::fetchColumn(), чтобы получить только один столбец, который вы пытаетесь сделать сейчас.

В любом случае, я надеюсь, что это объяснение поможет вам понять, почему вы не можете вернуться к PHP 5.3.x, если используете определенные возможности PHP 5.4, а также некоторое понимание того, как улучшить соединение с базой данных и доступные функции, которые могут вам помочь получите желаемый результат без использования разметки массива, которая предоставляется с помощью PHP 5.4.^^

+1

В этом случае временная переменная не нужна. Можно использовать 'list ($ country) = mysql_fetch_row (...)'. – cleong

+0

Несмотря на то, что введение ['list'] (http://us2.php.net/manual/en/function.list.php) программисту, который не знаком с этим языком, может вызвать путаницу в отношении того, как это работает. Использование временной переменной показывает прямую линию назначения в том, как OP был знаком. ^^ – Jon

Смежные вопросы