我是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();
答案 0 :(得分: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();
答案 1 :(得分: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();
答案 2 :(得分:1)
“{无法连接”来自die()
函数,如果mysql_connect
失败,将停止执行脚本。这意味着您的代码无法创建连接,请检查$host
,$username
和$password
参数。如果您的主机是远程主机,请确保您有权连接它。
正如pce所述,您在$connecton
中也有一个拼写错误,应该是$connection
答案 3 :(得分: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();