试图转换以下PHP代码以获得准备好的声明

时间:2016-03-22 16:59:42

标签: php mysql

我是PHP和MySQL的新手。我有以下代码,但现在我需要将准备好的语句合并到。我尝试过很多东西,但没有运气。

以下是原始的PHP代码:

$sql = "SELECT name, address, city, phone, id FROM Lab7 WHERE name = '$name' ";
        mysql_select_db('muftih_Registration');
        $retval = mysql_query( $sql, $conn );

这是我的尝试不起作用:

$sql = "SELECT name, address, city, phone, id FROM Lab7 WHERE name = ?";
        $sql->bindParam('s', $name);
        mysql_select_db('muftih_Registration');
        $retval = mysql_query( $sql, $conn );

我一直在:

  

致命错误:在非对象

上调用成员函数bindParam()

2 个答案:

答案 0 :(得分:0)

mysql_系列不支持预准备语句,您需要迁移到mysqli_,这是一个不同的驱动程序库。此外,您无法mysql_mysqli_库混合在一起。

最后,mysql_已被弃用了好几年了,已经在php 7中删除了。

概要:不要使用mysql _

答案 1 :(得分:0)

您需要使用mysqli才能使用准备好的。

让我举个例子。

$mysqli = new mysqli('localhost', 'username', 'password', 'database');

if (mysqli_connect_errno()) {
   printf("Connect failed: %s\n", mysqli_connect_error());
   exit();
 }

if ($stmt = $mysqli->prepare("SELECT name, address, city, phone, id FROM Lab7 WHERE name = ?")) {

    $stmt->bind_param("s", $name);
    $stmt->execute();
    $stmt->bind_result($name, $address, $city, $phone, $id);
    $stmt->fetch();

    echo "$name, $address, $city, $phone, $id"; // Print the retrieved row

    $stmt->close();
}

希望这有帮助。

和平!的xD