Я пытаюсь создать веб-сайт, на котором php соединяется с бэкэндом sql. Есть 1 строка с именем пользователя = 'user1'.
Однако этот простой 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
?>
приведенный выше код возвращает этот вывод -
Значение $val равно 0, когда явно имеется 1 строка с именем пользователя = 'user1'. Пожалуйста, помогите, мне нужно получить информацию о «user1» в моем php-скрипте.






Вы сделали что-то не так, обновите это и попробуйте
$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);
все еще не работает, та же проблема. Обновление кода в вопросе.
попробуй вот так php.net/manual/en/mysqli-stmt.bind-param.php
Вам нужно везде правильно использовать имя переменной подключения (в вашем случае это $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(...). Неверное имя переменной.
Вы не должны публиковать результаты в виде изображений. Вместо этого скопируйте и вставьте их в тело вопроса.