PHP - Undefined Var - получение значения из базы данных MySQL - PullRequest
0 голосов
/ 26 марта 2012

Я пытаюсь создать функцию, которая извлекает значение из БД, но я получаю ошибку, переменная не определена. Я читал, что вы можете установить уровень ошибки php ниже, но для меня это плохая практика.

Я попытался передать de undefined var в качестве параметра, я попытался дать ему стандартное значение. но я, кажется, не понимаю концепции здесь.

вот код: $ Плейлист не определен, что-то пошло не так, выводится на экран

function returnPlaylistIndex(){

    $con = mysql_connect("localhost", "user", "pass") or die(mysql_error()); 
    if(!$con){
        mysql_select_db("dbname") or die(mysql_error()); 
        $result = mysql_query("SELECT * FROM dbname limit 1");  
    while($row = mysql_fetch_array($result))
    {
        $PlayList = $row['playlistIndex'];
    }
mysql_close($con);
}
if(isset($Playlist)){
    echo $Playlist."<br />";
    return $Playlist;
} else {
    echo "something went wrong while quering";
}
}

любая помощь приветствуется

Ответы [ 6 ]

3 голосов
/ 26 марта 2012

Ваш текущий код фактически никогда не будет обращаться к базе данных из-за этой опечатки:

if(!$con){  // MEANT TO WRITE $con

Поскольку соединение всегда будет хорошим (иначе в предыдущей строке будет die, которое остановило бы сценарий - что фактически делает условие избыточным), это условие всегда будет неуспешным, и $PlayList никогда не будет установлен.

Кроме того, обратите внимание, что вы используете два разных стиля именования для переменной: $PlayList (регистр верблюда) и $Playlist (только первая буква верхнего регистра).

Тем не менее, я до сих пор не понимаю, почему вы получите сообщение об ошибке в этой функции, так как вы на самом деле тестируете с isset. Можете ли вы указать фактическую ошибку и указать строку, в которой она произошла?

2 голосов
/ 26 марта 2012

Либо используйте $PlayList или $Playlist, но не смешивайте.

Переменные чувствительны к регистру.

1 голос
/ 26 марта 2012

что-то не так с:

  $result = mysql_query("SELECT * FROM dbname limit 1");  

dbname должно быть table имя, пожалуйста, проверьте. Убедитесь, что ваш запрос возвращает результаты, попробуйте запустить на консоли.

, а также инициализировать массив $PlayList перед циклом while:

нравится: $PlayList=array();

переменные php чувствительны к регистру. Пожалуйста, проверьте, что они должны быть в том же случае.

if(isset($PlayList)){
    echo $PlayList."<br />";
    return $PlayList;
} else {
    echo "something went wrong while quering";
}
0 голосов
/ 26 марта 2012

PHP учитывает регистр имен переменных, но не имен функций / методов.

Из-за того, что PHP "видит" $PlayList и $Playlist как 2 различные переменные.

Также проверьте, является ли результат $ действительным ресурсом:

$result = mysql_query("SELECT * FROM table_name limit 1");
if( $result )
    while($row = mysql_fetch_array($result))
0 голосов
/ 26 марта 2012

Выбор базы данных возможен только при активном подключении к БД:

$con = mysql_connect("localhost", "user", "pass") or die(mysql_error()); 
if($con !== FALSE) {
  mysql_select_db("dbname") or die(mysql_error());
...
0 голосов
/ 26 марта 2012

Ваш код в порядке, кроме одной вещи:

if(isset($PlayList)){
    echo $PlayList."<br />";
    return $PlayList;
} else {
    echo "something went wrong while quering";
}

обратите внимание, что $ PlayList и $ Playlist не совпадают:)

...