[英]PHP 5.3 dynamic array broken
我有一個舊系統,已切換為運行PHP 5.3。 出現的一個問題是設計用來編輯表中動態產生的值的代碼。 editinvoice數組沒有值。 有任何想法嗎?
//Line Item x:<input type="text" name="editinvoice[lineitem_text_x]">
//Value x:<input type="text" name="editinvoice[lineitem_amount_x]">
//edit values in the invoice table
$sqldata = array();
foreach ($_POST['editinvoice'] AS $k => $v)
{
$sqldata[] = "$k = '$v'";
}
$sql = "UPDATE db.invoices SET ".implode(',', $sqldata)." WHERE (booking_id = '$booking_id') LIMIT 1";
mysql_query($sql);
我知道mysql已過時,但是沒有資源重寫系統,並且它在Intranet上,因此沒有SQL注入的麻煩。
您的代碼暗示您期望$_POST['editinvoice']
是一個數組。 但是您說您在某處添加了替代magic_quotes_gpc
foreach($_POST as $key => $val){
$_POST[$key] = addslashes($val);
}
因此,猜測數組$_POST['editinvoice']
什么?
<?php
$expected = array("foo" => "bar");
$_POST["editinvoice"] = addslashes($expected);
assert ($expected == $_POST["editinvoice"]); // it's NULL
警告:addslashes()期望參數1為字符串…
PHP警告:assert():斷言失敗
您也可能在錯誤日志中找到這樣的警告。
您的代碼依賴magic_quotes_gpc=on
。 因此,請再次打開它並刪除該損壞的解決方法。 當您更新到> = PHP-5.4時,您仍然可以找出解決方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.