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

你实际上有两个问题。

第一个与您的问题相关的是在这一行:

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

你说你收到错误can't connect。这意味着您的数据库连接的主机、用户名和/或密码无效。检查连接信息是否正确,您应该能够解决问题。

第二个是您正在使用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.定义数据库常量供以后在项目中使用;(这段代码应该只执行一次)

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 回答