gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 04:02:23 25 4
gpt4 key购买 nike

我正在使用两个输入参数调用一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com