日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

php获取longtext字段为空,php – 在longtext字段上准备好的mysqli select语句将返回空...

發布時間:2025/4/16 数据库 89 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php获取longtext字段为空,php – 在longtext字段上准备好的mysqli select语句将返回空... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我有一個運行良好的數據庫查詢功能 – 除了我遇到了

mysqli預處理語句和longtext字段顯然已知的問題.即使通過phpMyAdmin運行查詢工作正常,longtext字段總是空的,會發生什么.根據

http://www.workinginboxershorts.com/php-mysqli-returns-empty-variables-from-longtext-column,將數據類型切換為文本可以解決問題.然而,在我的情況下,我真的更愿意離開這個領域,因為我可以預見這個額外空間有價值的時間.

我正在使用參數化查詢,這顯然是問題所在.這是我的功能:

// Bind results to an array

// $stmt = sql query, $out = array to be returned

function stmt_bind_assoc (&$stmt, &$out) {

$data = mysqli_stmt_result_metadata($stmt);

$fields = array();

$out = array();

$fields[0] = $stmt;

$count = 1;

while($field = mysqli_fetch_field($data)) {

$fields[$count] = &$out[$field->name];

$count++;

}

call_user_func_array('mysqli_stmt_bind_result', $fields);

}

// DB Query

// $query = SQL query, $params = array of parameters, $rs = whether or not a resultset is expected, $newid = whether or not to retrieve the new ID value;

// $onedimensionkey = key required to convert array into simple one dimensional array

function db_query($query, $params, $rs = true, $newid = false, $onedimensionkey = false) {

$link = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);

if (!$link) {

print 'Error connecting to MySQL Server. Errorcode: ' . mysqli_connect_error();

exit;

}

// Prepare the query and split the parameters array into bound values

if ($sql_stmt = mysqli_prepare($link, $query)) {

if ($params) {

$types = '';

$new_params = array();

$params_ref = array();

// Split the params array into types string and parameters sub-array

foreach ($params as $param) {

$types .= $param['type'];

$new_params[] = $param['value'];

}

// Cycle the new parameters array to make it an array by reference

foreach ($new_params as $key => $parameter) {

$params_ref[] = &$new_params[$key];

}

call_user_func_array('mysqli_stmt_bind_param', array_merge(array($sql_stmt, $types), $params_ref));

}

}

else {

print 'Error: ' . mysqli_error($link);

exit();

}

// Execute the query

mysqli_stmt_execute($sql_stmt);

// If there are results to retrive, do so

if ($rs) {

$results = array();

$rows = array();

$row = array();

stmt_bind_assoc($sql_stmt, $results);

while (mysqli_stmt_fetch($sql_stmt)) {

foreach ($results as $key => $value) {

$row[$key] = $value;

}

$rows[] = $row;

}

if ($onedimensionkey) {

$i = 0;

foreach ($rows as $row) {

$simplearray[$i] = $row[$onedimensionkey];

$i++;

}

return $simplearray;

}

else {

return $rows;

}

}

// If there are no results but we need the new ID, return it

elseif ($newid) {

return mysqli_insert_id($link);

}

// Close objects

mysqli_stmt_close($sql_stmt);

mysqli_close($link);

}

根據我發布的鏈接,有一個解決方法涉及完成任務的順序,但要么我以完全不同的方式處理我的查詢,要么我只是不理解重要的事情.

感謝任何能提供幫助的人!

編輯:感謝Corina的回答,我已經解決了這個問題 – 對于遇到此問題的任何其他人,您只需要在mysql_stmt_execute命令之后添加以下內容:

// Execute the query

mysqli_stmt_execute($sql_stmt);

// Store results

mysqli_stmt_store_result($sql_stmt);

總結

以上是生活随笔為你收集整理的php获取longtext字段为空,php – 在longtext字段上准备好的mysqli select语句将返回空...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。