0

このコードをmysql接続に使用しています

    $con = mysql_connect("localhost", "username" , "password");
    if (!$con)
    {
       die('Could not connect: ');
    }
    else 
     { echo "connection failed....";}
   mysql_select_db("ManagersDatabase", $con);

mysql データベースは にあります/var/lib/mysql/ManagersDatabase。私のphpページは/var/www/html/. 何も印刷しません。私のコードで間違っているのは何ですか?

4

4 に答える 4

3

これは、PDO:を使用して接続し、クエリ時に準備済みクエリを利用する方法です。

<?php 
try{
    $con = new PDO('mysql:host=127.0.0.1;dbname=your_database','root','password');
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $con->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
}catch (Exception $e){
    die('Cannot connect to database. Details:'.$e->getMessage());
}
?>

またはmysqliを使用して、クエリを実行するときに準備されたクエリを利用します

<?php
$con = new mysqli("127.0.0.1", "user", "password", "your_database");
if ($con->connect_errno) {
    die("Failed to connect to MySQL: (".$con->connect_errno.") ".$con->connect_error);
}
print_r($con);
?>

編集 (コメントに返信): 追加print_r($con);すると、次のような mysqli 接続オブジェクトが表示されます。

/*
mysqli Object
(
    [affected_rows] => 0
    [client_info] => mysqlnd 5.0.10 - 20111026 - $Id: b0b3b15c693b7f6aeb3aa66b646fee339f175e39 $
    [client_version] => 50010
    [connect_errno] => 0
    [connect_error] => 
    [errno] => 0
    [error] => 
    [error_list] => Array
        (
        )

    [field_count] => 0
    [host_info] => 127.0.0.1 via TCP/IP
    [info] => 
    [insert_id] => 0
    [server_info] => 5.5.25a
    [server_version] => 50525
    [stat] => Uptime: 10  Threads: 1  Questions: 1  Slow queries: 0  Opens: 33  Flush tables: 1  Open tables: 26  Queries per second avg: 0.100
    [sqlstate] => 00000
    [protocol_version] => 10
    [thread_id] => 1
    [warning_count] => 0
)
*/

他の方法は時代遅れであり、すぐに (ありがたいことに) 非推奨になります。

于 2012-08-21T09:50:38.873 に答える
0

else ブロックでデータベースに接続する必要があります。

   $con = mysql_connect("localhost", "username" , "password");
    if (!$con)
    {
       die('Could not connect: ');
    }
    else    // if connection is made, then select the DB
     { 
       mysql_select_db("ManagersDatabase", $con);
     }
于 2012-08-21T09:38:06.307 に答える
0

あなたの質問からの引用:

if (!$con)
{
   die('Could not connect: ');
}
else 
 { echo "connection failed....";}

...あまり意味がないことに気づきましたか?if (something) { //接続できませんでした} else { //接続に失敗しました}と言っているので、コードは常に失敗していると考えています。

あなたが持っているべきものは次のようなものです

$con = mysql_connect("localhost", "username" , "password");
if ($con === false)
{
   die('Could not connect: ' . mysql_error());
}
mysql_select_db("ManagersDatabase", $con);

したがって、実際には何でも印刷されます。

また、エラーを画面に表示するには display_errors を有効にするか、 error_log を使用してエラーをどこかに記録する必要があります。

さらに、実際に mysql 拡張機能が有効で使用中であること、および mysql_connect() 関数が使用可能であることを確認してください。phpinfo(); はあなたが持っている拡張機能を教えてくれ、 function_exists() は利用可能な機能があることを教えてくれます。

だから、やるべきこと:

  1. 上記のようにコード ロジックを修正します
  2. エラーの印刷またはログを有効にする
  3. mysql 拡張機能が有効になっていることを確認します
  4. mysql_connect() 関数が実際に呼び出し可能であることを確認します

編集します。不足している mysql 拡張子が問題のようです (「未定義関数 mysql_connect の呼び出し」):

まず、PHP 構成にアクセスできる必要があります。これがローカルのインストールまたはサーバーである場合は、それを持っている必要があります。他の誰かがホスティングしている場合は、これらのことを変更する必要があるのは彼らです。

次のようないくつかの仮定を考えると、

  • ローカル Apache サーバーを使用している
  • XAMPP やその他の *AMP 製品を使用していないが、バニラ インストールを使用している

これはあなたがすべきことです:

  • php.ini 構成ファイルを見つけるか、PHP フォルダーにサンプル ファイルがない場合は、サンプル ファイルに基づいて作成します。
  • 以下の行を見つけます (Windows の場合は .dll、Linux の場合は .so、他はわかりません)。

;extension=php_mysql.dll
;extension=php_mysqli.dll
;extension=php_pdo_mysql.dll

  • 使用するコメントからコメント (最初の「;」) を取り除きます。あなたの例では最初のものを使用しています。他のものは、ここにある他の投稿のいくつかで説明されている他の抽象化を使用するためのものです。
  • 構成の問題をすぐに確認したい場合は、「display_startup_errors」も有効にします
  • 「extension_dir」設定が正しく、上記の .dll 拡張子を持つフォルダーを指していることを確認します
  • Apache サーバーを再起動します
于 2012-08-21T09:45:08.310 に答える