两者
'CUSTOMER' => htmlspecialchars($tmpArray['Customer_Bill_Name'], ENT_QUOTES)
和
'CUSTOMER' => mysqli_real_escape_string($con, $tmpArray['Customer_Bill_Name']),
无法解决我的问题转义'
撇号
我有"客户"字段,这是一个linked field(dropdown list)
,这意味着此字段中的值来自另一个表。为了从此字段中添加/选择Customer_Bill_name
等效项,您需要具有完全匹配的记录,这意味着CUSTOMER
必须完全等于Customer_Bill_Name
的值。
但是当Customer_Bill_Name
包含撇号时,我遇到了问题'
例如XXX'S LLC
.
我尝试了var_dump()
,print_r()
看看数据的外观,但我看不出任何问题,问题是当尝试输入记录时它没有,我试图发送一个数组Customer_Bill_name
工作正常。
$records
$records=array(
'CUSTOMER' => mysql_escape_string($tmpArray['Customer_Bill_Name']),
'WHEEL PN 1-S' => htmlspecialchars($wheelpn, ENT_QUOTES),
'QUANTITY' => htmlspecialchars($tmpArray['Quantity'], ENT_QUOTES),
'SO DATE' =>htmlspecialchars($tmpArray['TransactionDate'], ENT_QUOTES),
'SO NUMBER' => htmlspecialchars($tmpArray['Reference'], ENT_QUOTES),
'CUSTOMER PN' => htmlspecialchars($tmpArray['PartNumber'], ENT_QUOTES),
'SHIP VIA' => htmlspecialchars($tmpArray['WhichShipVia'], ENT_QUOTES),
'PROMISED DATE' => htmlspecialchars($tmpArray['ShipByDate'], ENT_QUOTES),
'COMMENTS' => htmlspecialchars($tmpArray['Comment'], ENT_QUOTES),
'PO #' => htmlspecialchars($tmpArray['CustomerInvoiceNo'], ENT_QUOTES),
'WO Notes' =>htmlspecialchars($tmpArray['SalesDescription'], ENT_QUOTES),
'ROUTING' =>htmlspecialchars($routing, ENT_QUOTES),
);
$tv->addRecord($tableId, $records);
//addRecord() 函数
/**
* Add more than one record at once to a table. Batch inserts.
*
* @param int $tableId
* @param array $records
* @return array
*/
public function addRecords($tableId, $records)
{
$url = self::BASE_URL . self::RECORDS_URL;
$data = array(
'table_id' => $tableId,
'records' => $records
);
return $this->api($url, 'POST', json_encode($data), 'json');
}
var_dump($tableId)
, var_dump($records)
, var_dump($this->api(...))
:
int(45454270957) array(12) {
["CUSTOMER"]=> NULL
["WHEEL PN 1-S"]=> string(0) ""
["QUANTITY"]=> string(21) "2.0000000000000000000"
["SO DATE"]=> string(10) "2010-12-02"
["SO NUMBER"]=> string(5) "655028"
["CUSTOMER PN"]=> string(0) ""
["SHIP VIA"]=> string(3) "DHL"
["PROMISED DATE"]=> string(10) "2014-12-23"
["COMMENTS"]=> string(0) ""
["PO #"]=> string(4) "98430"
["WO Notes"]=> string(16) "sps990X15 8-8 JDY"
["ROUTING"]=> string(0) "" } NULL
请帮忙谢谢!
问题是,如果尚未建立MySQL连接,mysqli_real_escape_string()
返回一个空字符串。由于您使用的是外部API进行记录管理,因此我怀疑MySQL连接从一开始就不存在。
因此,您将错误数据发送到 Trackvia API - 该 API 返回NULL
响应。
解决方案是使用非MySQL库将数据解析/清理到API中。我建议str_replace
您的 API 出现问题的字符。
htmlspecialchars
不起作用,因为有了ENT_QUOTES
,像'
这样的角色会变得'
,"
会变得"
。当您var_dump
它时,您认为它工作正常,因为 HTML 实体会呈现回引用。所以XXX's AG
实际上被存储为XXX's AG