나는 MySQL 데이터베이스에 우편 번호를 varchar(10)
으로 저장하고 있습니다. 어떤 이유로 하나의 테이블에 저장하는 것이 다른 테이블처럼 작동하지 않습니다. 필드 간의 유일한 차이는 varchar(10) Nullable
이고 하나는 varchar(10)
입니다. Nullable
열은 앞에 0이없는 우편 번호를 저장하므로 '05415'
은 5415
이됩니다. 이것은 다른 테이블에서도 잘 작동합니다. 나는 그들이 같은 페이지에 저장되어 있다고 생각하지만 문제를 찾을 수없는 것 같습니다. 나는 PHP에별로 좋지 않으므로 여기에 도움을 주시면 감사하겠습니다.PHP Zip Code Losing Leading Zero
이것은 사이트에 등록하는 기능입니다. db의 등록 테이블은 우편 번호를 선행 0으로 저장하므로이 기능이 작동한다고 가정합니다.
$Zip = strip_tags(trim($_POST['MembersZip']));
if (strlen($Zip = trim($Zip)) == 0) {
$isError = true;
print "<script>$('#MembersZip').addClass('error');</script>";
print '<div class="errors">Please enter zip/postal code</div>';
}
if (strlen($Zip = trim($Zip)) < 5) {
$isError = true;
print "<script>$('#MembersZip').addClass('error');</script>";
print '<div class="errors">Zip code must be at least 5 digits</div>';
}
$sql = "INSERT INTO tbl_ecommerce_addresses (
ead_postal_code
) VALUES (
'" . addslashes($Zip) . "'
)";
주문 프로세스는 다음과 같습니다. 이것은 선행 제로가 삽입되기 전에 삭제되는 테이블입니다.
$fieldName = "BillingZip";
$fieldValue = strip_tags($_POST[$fieldName]);
if (!$fieldValue || strlen($fieldValue = trim($fieldValue)) == 0) {
$isError = true;
print "<script>$('#{$fieldName}').addClass('error');</script>";
print '<div class="errors">Please enter billing zip/postal code</div>';
} else {
$this->fields[$fieldName] = $fieldValue;
$this->record->eod_billing_postal_code = $fieldValue;
}
$Zip = $this->record->eod_billing_postal_code;
if (strlen($Zip = trim($Zip)) < 5) {
$isError = true;
print "<script>$('#BillingZip').addClass('error');</script>";
print '<div class="errors">Billing Zip Code must be at least 5 digits</div>';
}
It looks like this line
$newId = $this->record->insert();
is doing the insert, but when I do a var_dump of $this->record, the zip code still shows the leading 0. The only other thing I can think of is that the payment gateway is changing it somehow.
$paymentType = urlencode("Authorization"); // 'Sale' or 'Authorization'
$firstName = urlencode($this->fields["BillingFirst"]);
$lastName = urlencode($this->fields["BillingLast"]);
$creditCardType = urlencode($this->fields["CardType"]);
$creditCardNumber = urlencode($this->fields["CardNumber"]);
$padDateMonth = urlencode(str_pad($this->fields["CardMonth"], 2, '0', STR_PAD_LEFT));
$expDateYear = urlencode($this->fields["CardYear"]);
$cvv2Number = urlencode($this->fields["CardCode"]);
$address1 = trim(urlencode($this->fields["BillingAddress"]));
$address2 = urlencode($this->fields["BillingAddress2"]);
$city = urlencode($this->fields["BillingCity"]);
$state = urlencode($this->fields["BillingState"]);
$zip = urlencode($this->fields["BillingZip"]);
$country = urlencode($CountryCode); // US or other valid country code
$amount = urlencode($this->fields["PurchasedTotal"]);
$currencyID = urlencode($this->siteConfig->cy_code);
$ipAddress = $main->getIP();
$invoice = substr($this->fields["CardNumber"],-4,4) . substr($this->fields["BillingZip"],0,4) . substr($this->fields["PurchasedTotal"],0,2);
$nvpStr = "&PAYMENTACTION=$paymentType&IPADDRESS=$ipAddress&AMT=$amount&CREDITCARDTYPE=$creditCardType&ACCT=$creditCardNumber".
"&EXPDATE=$padDateMonth$expDateYear&CVV2=$cvv2Number&INVNUM=$invoice&FIRSTNAME=$firstName&LASTNAME=$lastName".
"&STREET=$address1&CITY=$city&STATE=$state&ZIP=$zip&COUNTRYCODE=$country&CURRENCYCODE=USD";
는 우편 번호가 올바르게, 나는이와 코드를 업데이트 표시에 도착하고, 0이 나타났다 : 나는 추측이 있다면
$zip = str_pad($order->eod_shipping_postal_code, 5, '0', STR_PAD_LEFT);
'var_dump ($ this-> fields)'할 수 있습니까? – sjagr
'[ "ShippingZip"] => 문자열 (5) "05154"'옳은 것 같습니다. hmmm – jlg
@sjagr 또한'var_dump ($ this-> record)'를 추가했지만 여전히 우편 번호를 보여줍니다. 나는이 줄'$ newId = $ this-> record-> insert();'가 데이터를 삽입하고 있다고 생각했지만 우편 번호가 덤프 될 때 문제가 없다면 다른 문제가 될 수있는 곳은 무엇입니까? – jlg