php - 接收查询失败错误

标签 php mysql

我正在尝试从 mySQL 数据库中提取信息。 我为此使用的代码是:

  <?php global $current_user;
  get_currentuserinfo();

  //echo 'Username: ' . $current_user->user_login . "\n";
  //echo 'User email: ' . $current_user->user_email . "\n";
  //echo 'User first name: ' . $current_user->user_firstname . "\n";
  //echo 'User last name: ' . $current_user->user_lastname . "\n";
  //echo 'User display name: ' . $current_user->display_name . "\n";
  echo  $current_user->display_name . "\n";
  //echo 'User ID: ' . $current_user->ID . "\n";
?>
<?php
            $members_settings = get_option('members_db');
        $host       = $members_settings['members_db_server']; // ''; //replace your IP or hostname
    $user       = $members_settings['members_db_user']; // ''; //database user
    $password   = $members_settings['members_db_pass']; //'';//database password
    $database   = $members_settings['members_db_database']; /*''; //database name
    $prefix     = ''; //prefix if any else just give any random value
    $driver     = 'mysql'; //here u can also have ms sql database driver, postgres, etc
    $options    = array ( 'driver' => $driver, 'host' => $host, 'user' => $user, 'password' => $password,  'database' => $database, 'prefix' => $prefix );

    //$db = JDatabase::getInstance($options);
    $con = mysql_connect($host,$user,$password);
            $db_selected = mysql_select_db($database, $con);
           // if (!$db_selected) { die ("Can\'t use ".$database." : " . mysql_error()); }


            $userid = $current_user->user_login;
    $sql = "SELECT * FROM  ibew_Members WHERE Card = $userid";
            //echo $sql;
    $result = mysql_query($sql);
            if ($result) {
                list($id) = mysql_fetch_array(mysql_query($sql));
                //echo $id;
            } else {
                echo "query failed";
            }

    if (mysqli_connect_errno($con))
    {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

?>

目前,我收到查询失败的消息,因为我的错误,并且不确定问题出在哪里,因为当涉及到这个专业领域时,我仍然有点不了解。

任何有关如何解决此问题的见解将不胜感激。

最佳答案

Mysql_ 和 mysqli_ 已弃用,您应该考虑迁移到 PDO 框架。这是一个例子:

// Database connection
$dbhost = 'localhost';
$dbname = 'databaseName';
$dbuser = 'userName';
$dbpass = 'userPassword';
$db = new PDO('mysql:host='.$dbhost.';dbname='.$dbname.';charset=utf8', $dbuser, $dbpass);
$db->exec("set names utf8");
// Disable enumeration of prepared statements to instantiate "real" prepared statements
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
// to implement try{} catch{} use PDO:ERRMODE_EXCEPTION
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

// New PDO Query
$userQuery = "SELECT * FROM  ibew_Members WHERE Card = :userid";
$userQueryExec = $db->prepare($userQuery);
$userQueryArray = array(":userid" => $userid);
// Execution and Error reporting
try {
    $userQueryExec->execute($userQueryArray);
    if ($userQueryExec->rowCount() != 0) { // we have results 
        $results = $userQueryExec->fetchAll(PDO::FETCH_ASSOC);                  
        foreach($results as $result) { 
            echo "Relevant Info: ".$result['fieldname'];
        }
    } else {
        echo "No results found in the database for this user<br>\n";
    }
}
catch (Exception $e) {
    echo "Unable to complete Transaction: ".$e."<br>\n";
}

这为您提供了更干净的数据库事务,并有助于防止使用 PDO 对象进行注入(inject)。 Try/Catch 还将提供所报告的错误,并提供更详细的系统错误。

关于php - 接收查询失败错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31860321/

相关文章:

php PDO - 您绑定(bind)所有参数吗?

mysql - KEY + 约束 mysql 5 似乎重复

php - php mysql client 与mysql server 版本不匹配会出现什么问题?

javascript - Laravel5.5路由; 500内部服务器错误)

mysql - 转mysql结果表

php - 如何使用 PHP API 和 AngularJS 2 服务正确处理/获取正确的 JSON 响应?

php - 如何从返回 3 维数组的查询中获取数据并在 symfony 3 中的 Twig View 上设置值

php - 如何在 Admin Silverstripe 中添加自定义按钮及其功能?

php - 在 PHP 中,是否可以对对象执行 "var_dump"而不包括设置为其属性的对象转储?

mysql - 从另一个表的行更新一个表中的列