2

私はPHPを初めて使用します..SQLステートメントをプリペアドステートメントに転送する方法に行き詰まります..私が受け取ったエラーメッセージは、「接続できません」というものです。

私のコードは次のとおりです

$connection = mysql_connect($host,$username,$password) or die ("can't connect"); 


$select_database = mysql_select_db($db_name);
$id = mysql_real_escape_string ($_GET ['id']); 

$query = 'SELECT * from &tbl_name where id=?';
$stmt = $connection->prepare($query);
$stmt->bind_param("d", $id);
$stmt->execute();
$rows=mysql_fetch_array($stmt);
$stmt->close();
4

4 に答える 4

6

実際には2つの問題があります。

最初の、そしてあなたの質問に関連するものは、次の行にあります。

$connection = mysql_connect($host,$username,$password) or die ("can't connect");

あなたはエラーを受け取っていると言いますcan't connect。これは、データベース接続のホスト、ユーザー名、および/またはパスワードが無効であることを意味します。接続情報が正しいことを確認してください。問題を解決できるはずです。

2 つ目は、関数を使用してデータベースに接続し、バインド/実行関数mysql_を使用しようとしていることです。mysqli_混ぜ合わせることはできません。

OOP スタイルでバインド/実行しようとしているため、役立つ再コード化されたサンプルを次に示します。

$connection = new mysqli($host, $username, $password);
if ($connection->connect_error) {
    die("can't connect");
}
$query = 'SELECT * from tbl_name where id=?';
$stmt = $connecton->prepare($query);
$stmt->bind_param("d", $id);
$results = $stmt->execute();
$rows = $results->fetch_array();
$stmt->close();
于 2012-11-13T13:54:30.817 に答える
2

mysql_*従来の関数セットを使用して準備済みステートメントを実行することはできません。PDO または MySQLi を使用する必要があります。

$dbh = new PDO("mysql:dbname=testdb;host=127.0.0.1", "username", "password");

$query = "SELECT * FROM myTable WHERE id=?";
$stmt = $dbh->prepare($query);
$stmt->execute(array($my_id));

$result = $stmt->fetchAll();
于 2012-11-13T13:56:12.997 に答える
1

あなたが持っている「接続できません」は、失敗したdie()場合にスクリプトの実行を停止する関数から来ていmysql_connectます。これは、コードが接続の作成に成功していないことを意味します。およびパラメータ$hostを確認してください。ホストがリモートの場合は、ホストに接続する権限があることを確認してください。$username$password

pceが述べたように、タイプミスもあり$connectonます$connection

于 2012-11-13T13:56:20.143 に答える
0

試す

1.後でプロジェクトで使用するためにデータベース const を定義します。(このコードは一度だけ実行する必要があります)

define( "DBN","foo");//where foo is the database name
define( "DB_USERNAME", "rootuser" ); //generally root
define( "DB_PASSWORD", "my_very_hard_password" ); //be more creative
define( "DB_DSN", "mysql:host=localhost;dbname=".DBN );

...

2.PDOオブジェクトを作成して実行

$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$sql = "SELECT * from &tbl_name where id=:id";
$st = $conn->prepare( $sql );
$st->bindValue( ":id", $obj->id, PDO::PARAM_INT );  
// or $st->bindValue( ":id", 5, PDO::PARAM_INT );   
$st->execute();
return $st->fetchAll();
于 2012-11-13T13:57:38.907 に答える