我正在尝试从 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/