mysqli_query не возвращает результат - PullRequest
0 голосов
/ 01 января 2019

Я пишу php для возврата из mysql.
Мой запрос работает в MySQL Workbench, однако он не работает в php.

SQL ниже хорошо возвращается в MySQL WorkBench.

"select * from players_info where name = XXXX and sex = X and season = xxxx and tName = XXXX"

Мой php ниже

function player_info($conn, $name, $season, $sex, $tName){
    $output = '';
    $sql = "SELECT * 
        FROM players_info 
        WHERE name ='".$name."' and sex ='".$sex."'
        and season = '".$season."' and tName = '".$tName."'";

    $result = mysqli_query($conn, $sql);

    if($result -> num_rows > 0){
        while($row = mysqli_fetch_assoc($result)){
            $output = $row['name']."\n"
                ."No : ".$row['No']."\n"
                ."Pos : ".$row['pos']."\n"
                ."Height(m) / Weight(kg) : ".$row['height']. " / ".$row['weight']."\n"
                ."Born : ".$row['month']." ".$row['day'].", ".$row['year']."\n"
                ."Shoots / Catches : ".$row['shoots']."\n"
                ."Club : ".$row['team'];
        }
    } else {
        echo "no result!";
    }    
    $conn -> close();

    return $output;
}

HTML ниже.

<div id = "player_page3">
    <?php  
    echo player_info($conn, $_GET["name"], $_GET["season"], $_GET["sex"], $_GET["tName"]); 
    ?>
</div>

Я думаю, что мой код возвращает 0 результата, даже если sql правильный.
В чем проблема с моим кодом?

ОБНОВЛЕНИЕ:
Я добавил код, показанный ниже после $ sql.
Я думаю, это ничего не возвращает.результат «Описание ошибки: нет результата!»
'нет результата!'пришел из оператора else в моем коде.

if (!mysqli_query($conn, $sql)){
    echo("Error description : ". mysqli_error($conn));
}

1 Ответ

0 голосов
/ 01 января 2019

Прежде всего - как указано в комментариях, вы должны научиться готовить SQL-операторы.Используйте PDO - Ваш текущий сценарий Уязвим для SQL-инъекций.

Вот несколько замечаний:

Ваша переменная $output не являетсясобирая результат, потому что он перезаписывает себя по циклу.Вам нужно изменить это значение на .=

$output .= $row['name']."\n"
    ."No : ".$row['No']."\n"
    ."Pos : ".$row['pos']."\n"
    ."Height(m) / Weight(kg) : ".$row['height']. " / ".$row['weight']."\n"
    ."Born : ".$row['month']." ".$row['day'].", ".$row['year']."\n"
    ."Shoots / Catches : ".$row['shoots']."\n"
    ."Club : ".$row['team'];

.= объединить новый текст до конца.

ОБНОВЛЕНИЕ

Если вы хотитеодну строку нужно удалить цикл while

if($result -> num_rows > 0){
    $row = mysqli_fetch_assoc($result)
    $output = $row['name']."\n"
        ."No : ".$row['No']."\n"
        ."Pos : ".$row['pos']."\n"
        ."Height(m) / Weight(kg) : ".$row['height']. " / ".$row['weight']."\n"
        ."Born : ".$row['month']." ".$row['day'].", ".$row['year']."\n"
        ."Shoots / Catches : ".$row['shoots']."\n"
        ."Club : ".$row['team'];
} else {
    echo "no result!";
}    
...