PHP调用带in参数的mysql存储过程

标签 php mysql

我正在使用两个输入参数调用一个 mysql 存储过程。这是我的代码:

if (isset($_POST['button1'])) {
    $con = mysql_connect("localhost:3306","root","");
    if (!$con) {     
        echo '<b>Could not connect.</b>';
        die(mysql_error()); // TODO: better error handling
    } else {          
        mysql_select_db("php_database_1", $con);

        $username_v = $_POST['username'];
        $password_v = $_POST['password'];

        $stmt = $dbh->prepare("CALL login(?, ?)");
        $stmt->bindParam(2, $username_v, $password_v, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000); 

        // call the stored procedure
        $stmt->execute();

        print "procedure returned $username_v\n";

执行时,我得到:

Notice: Undefined variable: dbh in E:\xampp\htdocs\php4\default.php on line 52 Fatal error: Call to a member function prepare() on a non-object in E:\xampp\htdocs\php4\default.php on line 52

我该如何解决这个问题?

谢谢。

最佳答案

已编辑:看到更多代码后,您尝试将 mysql_() 函数与 PDO 混合使用。您不能那样做——相反,只能使用 PDO。这两个 API 不能一起工作,旧的 mysql_*() API 根本不支持准备好的语句。

您尚未连接到您的数据库或实例化 PDO 对象。

$username_v = $_POST['username'];
$password_v = $_POST['password'];
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';

// You must first connect to the database by instantiating a PDO object
try {
    $dbh = new PDO($dsn, 'root', 'root_db_pw');
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

// Then you can prepare a statement and execute it.    
$stmt = $dbh->prepare("CALL login(?, ?)");
// One bindParam() call per parameter
$stmt->bindParam(1, $username_v, PDO::PARAM_STR); 
$stmt->bindParam(2, $password_v, PDO::PARAM_STR); 

// call the stored procedure
$stmt->execute();

关于PHP调用带in参数的mysql存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10589273/

相关文章:

php - 将数组中的两列相乘并求出它们的总和

php - 如何将 48 小时添加到时间戳

mysql - MySQL 中何时使用单引号、双引号和反引号

php - 通过列名访问MySql数组

PHP/Javascript : Variable Swapping & Function calling

javascript - Ajax 代码未执行

php - 如何从 PHP 正确运行 Python 脚本

子查询的 MySQL 别名不起作用

PHP 将 JSON 数据从 Android 插入 MySQL 数据库

mysql - 更新/插入