【问题标题】:PHP sql query not returning correct number of rows to frontend [duplicate]PHP sql查询没有向前端返回正确的行数[重复]
【发布时间】:2019-11-10 06:55:24
【问题描述】:

我正在尝试创建一个 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'。请帮忙,我需要在我的 php 脚本中获取 'user1' 的详细信息。

【问题讨论】:

  • 您不应该将输出作为图像发布。而是将它们复制并粘贴到您的问题正文中。

标签: php html mysql mysqli


【解决方案1】:

您需要在任何地方正确使用连接变量名称。(在您的情况下它是$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(...)。变量名错误。
【解决方案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);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 2022-01-14
  • 2021-10-23
  • 1970-01-01
相关资源
最近更新 更多