SQL-запрос PHP не возвращает правильное количество строк во внешний интерфейс

Я пытаюсь создать веб-сайт, на котором php соединяется с бэкэндом sql. Есть 1 строка с именем пользователя = 'user1'.

SQL-запрос PHP не возвращает правильное количество строк во внешний интерфейс

Однако этот простой PHP-код для получения сведений о 'user1' -

<?php
    /* Database credentials. Assuming you are running MySQL
    server with default setting (user 'root' with password 'root') */
    define('DB_SERVER', 'localhost');
    define('DB_USERNAME', 'root');
    define('DB_PASSWORD', 'root');
    define('DB_NAME', 'startup');

    /* Attempt to connect to MySQL database */
    $conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);

    // Check connection
    if ($conn === false){
        die("ERROR: Could not connect. " . mysqli_connect_error());
    }
    echo '<p>Connected successfully</p>';

    $sql = "SELECT id, username, password FROM users WHERE username = ?";
    $stmt = mysqli_prepare($link, $sql);
    $param_username = "user1";
    mysqli_stmt_bind_param($stmt, "s", $param_username);

    mysqli_stmt_execute($stmt);
    // mysqli_stmt_store_result($stmt);
    echo '<p>done</p>';
    $val = mysqli_stmt_num_rows($stmt);
    printf("%%d = '%d'\n", $val); // standard integer representation
?>

приведенный выше код возвращает этот вывод -

SQL-запрос PHP не возвращает правильное количество строк во внешний интерфейс

Значение $val равно 0, когда явно имеется 1 строка с именем пользователя = 'user1'. Пожалуйста, помогите, мне нужно получить информацию о «user1» в моем php-скрипте.

Вы не должны публиковать результаты в виде изображений. Вместо этого скопируйте и вставьте их в тело вопроса.

Haem 28.06.2019 12:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
49
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы сделали что-то не так, обновите это и попробуйте

$sql = "SELECT id, username, password FROM users WHERE username = ?";
$stmt = mysqli_prepare($link, $sql);
$param_username = "user1";
mysqli_stmt_bind_param($stmt, "s", $param_username);
mysqli_stmt_execute($stmt);

все еще не работает, та же проблема. Обновление кода в вопросе.

Dhruv Chadha 28.06.2019 12:04

попробуй вот так php.net/manual/en/mysqli-stmt.bind-param.php

Bhavesh Tailor 28.06.2019 12:07
Ответ принят как подходящий

Вам нужно везде правильно использовать имя переменной подключения (в вашем случае это $conn, но вы использовали $link)

<?php
    /* Database credentials. Assuming you are running MySQL
    server with default setting (user 'root' with password 'root') */
    define('DB_SERVER', 'localhost');
    define('DB_USERNAME', 'root');
    define('DB_PASSWORD', 'root');
    define('DB_NAME', 'startup');

    $conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);

    /* check connection */
    if (!$conn) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }
    $param_username = "user1";
    $stmt = mysqli_prepare($conn, "SELECT id, username, password FROM users WHERE `username` = ?");
    mysqli_stmt_bind_param($stmt, "s", $param_username);

    /* execute prepared statement */
    mysqli_stmt_execute($stmt);

    printf("%d Row inserted.\n", mysqli_num_rows($stmt));

    /* close statement and connection */
    mysqli_stmt_close($stmt);

    /* close connection */
    mysqli_close($conn);
?>

Большое спасибо за помощь. Ошибка была в имени переменной. моя линия подключения sql была $conn = mysqli_connect(...). Неверное имя переменной.

Dhruv Chadha 28.06.2019 12:28

Другие вопросы по теме