【问题标题】:How to perform a mysql query after reading session values读取会话值后如何执行 mysql 查询
【发布时间】:2010-09-18 15:34:45
【问题描述】:

我正在使用这个脚本来读取会话中的一个值,然后我想查询这个值的数据库:

    <?php
session_start();
$user_id = $_SESSION["user_id"] ;
echo "Your user_id is: $user_id \n" ;

$query = sprintf("SELECT * FROM `customers` WHERE id='%s' ", $user_id);
$result = mysql_query($query);

if (!$result) {
    $message  = 'Invalid query: ' . mysql_error() . "\n";
    $message .= 'Whole query: ' . $query;
    die($message);
}

while ($row = mysql_fetch_assoc($result)) {
    $email =  $row['email'] . "\n";
    echo "Your e-mail adress is : $email \n" ;
}
?>

当我使用浏览器测试页面时,我得到了这个: 您的 user_id 是:1430

无效查询:用户 'nobody'@'localhost' 的访问被拒绝(使用密码:NO)整个查询:SELECT * FROM customers WHERE id='1430'

非常感谢!

【问题讨论】:

    标签: php mysql session


    【解决方案1】:

    首先连接到您的数据库服务器并使用mysql_connectmysql_select_db 选择一个数据库。 mysql_query 函数将尝试使用默认参数打开连接,或者如手册所述:

    如果没有找到这样的链接,它将尝试创建一个,就好像没有参数调用 mysql_connect()。

    因此,PHP 尝试使用用户名“nobody”和无密码连接到 localhost。

    mysql_connect('localhost', 'mysql_user', 'mysql_password');
    mysql_select_db('my_database');
    

    ..你准备好了。

    【讨论】:

      【解决方案2】:

      用户名nobody 需要密码才能使用数据库。该错误清楚地说明了这一点。服务器 localhost 的用户 nobody 在使用 no password

      access denied

      Access denied for user 'nobody'@'localhost' (using password: NO)

      或者,虽然这不同,但您运行代码的机器无权访问它运行数据库的机器。

      【讨论】:

        【解决方案3】:

        我很确定你的 id 是 INTEGER,所以以下应该可以工作:

        $query = sprintf("SELECT * FROM `customers` WHERE id=%d ", $user_id);
        

        对数据库进行身份验证似乎也存在问题。您是否使用mysql_connect() 成功连接到数据库?

        【讨论】:

        • 不是这样的,因为查询是正确构建的,你可以从错误SELECT * FROM customers WHERE id='1430' 看到这个
        • 我没有说它构建不正确。我只是说 id='whatever' 会失败,因为他将 INTEGER 与 CHAR/TEXT 进行比较。
        【解决方案4】:

        查询前需要connect使用有效用户/密码到数据库主机:

        mysql_connect($mysqlHost, $mysqlUser, $mysqlPassword);
        

        然后,你需要select数据库:

        mysql_select_db($mysqlDatabase) ;
        

        【讨论】:

          【解决方案5】:

          你需要先连接到一个数据库:

          <?php
          
          $username = "";
          $password = "";
          $hostname = ""; 
          
          //connection to the database
          $dbhandle = mysql_connect($hostname, $username, $password)
            or die("Unable to connect to MySQL");
          
          
          $selected = mysql_select_db("DBNAMEGOESHERE",$dbhandle)
            or die("End");
          
          
          }
          
          ?> 
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-08-27
            • 2018-08-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多