久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

在帶有存儲過程的 php 中使用 pdo

Using pdo in php with stored procedure(在帶有存儲過程的 php 中使用 pdo)
本文介紹了在帶有存儲過程的 php 中使用 pdo的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我在 MySQL 數據庫中有一個簡單的存儲過程:

I have a simple stored procedure in MySQL database:

DELIMITER $$
CREATE DEFINER=`vidhu`@`%` PROCEDURE `test`(var_datain TEXT)
BEGIN
    SELECT var_datain;
END

在 mysql-workbench 中調用此過程時,它返回我輸入的數據:

When calling this procedure in mysql-workbench it returns the data I put in:

現在,當我使用 pdo 從 PHP 調用它時,出現錯誤:

Now when I call it from PHP using pdo I get an error:

Fatal error: Cannot pass parameter 2 by reference in C:/apache......(3rd line)

這是我的php代碼:

$db = new PDO(DSN, DBUSER, DBPASS);
$stmt = $db->prepare("CALL test(?)");
$stmt->bindParam(1, 'hai!', PDO::PARAM_STR);
$rs = $stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo $result[0];

推薦答案

您需要使用 bindValue 而不是 bindParam.

You need to use bindValue instead of bindParam.

當你使用 bindParam 時,它綁定的是提供給參數的變量,而不是變量的值.

When you use bindParam, it binds the variable provided to the parameter, not the value of the variable.

所以,如果你這樣做:

$x = 5;
$stmt->bindParam(1, $x, PDO::PARAM_INT);
$x = 6;
$stmt->execute(); //executes with 6 instead of 5

它實際上是用 6 而不是 5 來執行的.為此,該方法必須具有對變量的引用.你不能引用文字,所以這意味著 bindParam 不能與文字(或任何你不能引用的東西)一起使用.

It's actually executed with 6 rather than 5. To do this, the method must have a reference to the variable. You cannot have a reference to a literal, so this means that bindParam cannot be used with literals (or anything you can't have a reference to).

$x = 5;
$stmt->bindValue(1, $x, PDO::PARAM_INT);
$x = 6;
$stmt->execute(); //executes with 5 instead of 6

那么:

$stmt->bindParam(1, 1, PDO::PARAM_INT); 
//invalid because there's no way to pass a literal 1 by reference
$stmt->bindValue(1, 1, PDO::PARAM_INT);
//valid

這篇關于在帶有存儲過程的 php 中使用 pdo的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Joining 2 tables in SELECT(MYSQL/PHP)(在 SELECT(MYSQL/PHP) 中加入 2 個表)
How to make lt;option selected=quot;selectedquot;gt; set by MySQL and PHP?(如何使lt;option selected=“selectedgt;由 MySQL 和 PHP 設置?)
Auto populate a select box using an array in PHP(使用 PHP 中的數組自動填充選擇框)
PHP SQL SELECT where like search item with multiple words(PHP SQL SELECT where like search item with multiple words)
json_encode produce JSON_ERROR_UTF8 from MSSQL-SELECT(json_encode 從 MSSQL-SELECT 產生 JSON_ERROR_UTF8)
MySQL ORDER BY rand(), name ASC(MySQL ORDER BY rand(),名稱 ASC)
主站蜘蛛池模板: 日本午夜在线视频 | 欧美日韩专区 | 狠狠亚洲 | 亚洲欧美国产毛片在线 | 国产一区二区在线免费观看 | 国产精品视频一二三区 | 精品在线免费观看视频 | 亚洲精品久久久久久久久久久 | 成人一区二区三区在线观看 | 性色av香蕉一区二区 | 黄网免费 | 欧美视频在线免费 | 欧美日韩一区在线 | 欧美精品一区二区三区蜜桃视频 | 日韩成人在线播放 | 国产精品欧美一区二区三区不卡 | 久久精品亚洲精品国产欧美 | 久久国产一区 | 操一草| 日本三级电影在线观看视频 | 一区二区三区在线 | 国产一区视频在线 | 亚洲一区视频 | 成人性视频免费网站 | 国产精品美女久久久免费 | 欧美 日韩 中文 | 超碰免费观看 | 国产精品一区二区三区久久久 | 一区二区免费 | 4hu最新网址 | 81精品国产乱码久久久久久 | 日韩免费视频一区二区 | 国产h视频 | 人人鲁人人莫人人爱精品 | a级免费视频 | 日韩1区 | 亚洲精品乱码 | 成人在线免费 | 日韩一区二区三区在线视频 | 成人av片在线观看 | 久久国产精品-国产精品 |