php中使用mysql stmt(預處理語句)

2021-05-23 15:22:06 字數 1063 閱讀 1431

預處理語句在某些應用場合中顯得十分高效和靈活,比如在一些重複查詢或批量資料錄入中。但是認識乙個事物的真面孔往往要經歷一番過程,甚至是折磨。尤其對菜鳥們來說,搞清乙個概念或排除乙個故障,往往要好幾個小時甚至好幾天的時間,箇中滋味自是五花八門啊。

閒話少說,言歸正傳。本次系統環境是xp,mysql版本5.1,php 5.3,apache 2.2。在這本教材的本例中,不幸的是教材示例竟然是錯誤的,所以遇到故障只能搜啊搜,歷經數時終於受到啟發將這個攔路虎給掃平了,原來我的問題是使用者許可權不足所致!

以下是總結的幾個可能遇到的常見故障現象:

錯誤1:fatal error: call to a member function bind_param() on a non-object in...

sql語句錯誤導致,如:$query = "insert into products values(?,?,?)";

應該是:$query = "insert into products(sku,name,price) values(?,?,?)";

錯誤2:insert command denied to user 'sn2010'@'localhost'

for table 'products'

使用者沒有insert 許可權導致該錯誤,通過grant增加相應許可權後,該故障消除。

( 其他幾個故障現象沒留意儲存記錄,現在忘了呵呵)

為了有效避免以上錯誤,應增加以下判斷:

if( $stmt = $mysqli->prepare($query) ) else

下面是完整的測試**,無誤:

if(isset($_post["submit"]))

$query = "insert into products(sku,name,price)values(?,?,?)";

$stmt=$mysqli->prepare($query);

if( $stmt = $mysqli->prepare($query) )   

}else

$stmt->close();

$mysqli->close();

}

php中使用mysql介紹 PHP中使用MySQL

mysql資料庫的擴充套件 擴充套件庫基本功能相似,用法基本相同,會增加一些新的特性 mysqli擴充套件庫 只能對mysql資料庫操作 pdo擴充套件 可以操作很多態別的資料庫 wamp下修改mysql資料庫密碼 三者在建立連線上的比較 pdo需要四個引數,除了資料庫管理員名稱 密碼 host 還...

PHP中使用儲存過程

下面是乙個簡單的存貯過程 create procedure sp mystoreprocedure as select host,user,password from user define oledb connection string provider sqloledb data source ...

在php中使用Sphinx

要使用php連線sphinx進行全文搜尋,有兩種方式 將sphinx作為php擴充套件安裝,這種方式比較麻煩,此處不介紹 在sphinx原始碼目錄下的有個api sphinxapi.php,將此檔案reqire到你的php中,即可呼叫api方法進行全文搜尋 require sphinxapi.php...