2

PHPの「mysql_connect()」関数を使用してMySQLサーバーに接続しようとしていますが、接続に失敗します。これは私のコードです:

$con = mysql_connect("example.net", "myusername","") or die("Could not connect: ".mysql_error()); 

このコードをPHPスクリプト内に配置し、Webブラウザーを使用して開こうとしました(スクリプトはPHPが有効になっているリモートホストに保存されています)が、機能しません。dieエラーも返されません。$conブラウザで正常に出力される前に何かをエコーし​​ますが、その行の後には何も出力されません。私がタイプした場合:

mysql -h example.net -u myusername

リモートマシンから、問題なくDBに接続し、クエリやその他の変更を行うことができました。

更新:私もいくつかの提案の後にこれを試しましたが、改善はありません:

<?php
    $usern = "myusername";
    $dbh = new PDO('mysql:host=servername.net;dbname=test', $usern, "");
    echo $usern;
?>
4

2 に答える 2

1

phpファイルはmysqlデータベースと同じサーバーにありますか?その場合、外部アドレスの代わりにmysql_connect()の最初の引数として「localhost」を使用する必要がある場合があります。

于 2012-06-22T16:17:21.633 に答える
1

PHPを実行しているリモートホストはどのオペレーティングシステムを使用していますか?おそらく、MySQLはで有効になっていませんphp.inimysql_*また、新しいコードには関数を使用しないでください。それらはもはや維持されておらず、コミュニティは非推奨プロセスを開始しています(赤いボックスを参照)。代わりに、プリペアドステートメントについて学び、 PDOまたはMySQLiのいずれかを使用する必要があります。どちらかがわからない場合は、この記事が役に立ちます。あなたが学びたいのであれば、これは良いPDOチュートリアルです。

PDOまたはMySQLiインターフェースを使用してみましたか?PHPを学習しようとしている場合は、mysql_ *関数を使用しないでください。次のような行を使用してデータベースにアクセスできるかどうかを確認します。

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

より詳細なドキュメントが必要な場合、このコードはドキュメント自体から直接取得されます。

編集:また、PDOのエラーチェック機能を使用してみてください。この例では、PDOを使用してデータベース接続を作成し、単純なクエリを実行しようとします。プリペアドステートメントやこれらの機能のいずれも使用しないため、本番環境に対応したコードではありません(つまり、改善方法を理解せずにコードにこれをスローしないでください)。編集して、SELECTデータベースに関連するクエリですが、少なくともPDOに、発生したエラーに関する詳細情報を提供するように指示する必要があります。

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$dbhost     = "localhost";
$dbname     = "test";
$dbuser     = "root";
$dbpass     = "admin";

// database connection
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

// query
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM booksa";
$q = $conn->query($sql) or die("ERROR: " . implode(":", $conn->errorInfo()));

$r = $q->fetch(PDO::FETCH_ASSOC);

print_r($r);
?>
于 2012-06-22T17:05:50.007 に答える