我想實現一個快捷功能,以取代常用的mysqli_real_escape_string()
作爲跟隨在單獨的腳本將被納入到我的主腳本:實現一個快捷功能,以取代mysqli_real_escape_string()
$cxn = mysqli_connect($hostname, $username, $password, $databasename)
or die ("Couldn't connect to server.");
function m($str) {return "'".mysqli_real_escape_string($cxn, $str)."'";}
的主腳本包含foreach
其將循環通過陣列如下:
foreach($ARRAY as $field => $value)
{
$fields[] = $field;
$value = strip_tags(trim($value));
$values[] = m($value); // function m() is implemented here
}
在檢查SQL語句,我發現所有插入的值都是空的。我知道如果沒有連接打開,mysqli_real_escape_string()
將返回一個空字符串,所以這可能是問題。但是,如果我替換下面的行
$values[] = m($value);
與此,
$values[] = "'".mysqli_real_escape_string($cxn, $value)."'";
返回所有正確的價值觀。那麼,導致我的快捷功能m()
失敗的原因是什麼?
由於範圍而失敗 - 函數m()不能訪問全局變量'$ cxn' - 您必須從全局範圍引用它$ GLBOALS ['cxn' ]'或者把它作爲一個論點來傳遞......個人來說,我將整個事物封裝在一個對象的頭腦中。 – CD001
你有沒有嘗試過array_walk_recursive()http://php.net/manual/en/function.array-walk-recursive.php? – Arda
我最近才意識到像array_walk和array_map這樣的函數,並沒有詳細地研究它們。我明白你在做什麼,我會努力在後期改進我的代碼。謝謝:) –