source

Wordpress Database Class - MySQL Type Bit

lovecheck 2023. 9. 14. 23:20
반응형

Wordpress Database Class - MySQL Type Bit

저는 MySQL 데이터베이스와 통신하기 위해 워드프레스 내부의 WPDB 객체를 사용하고 있습니다.내 데이터베이스에 다음과 같은 유형의 열이 있습니다.bit(1), 그러나 워드프레스는 이것들을 다음과 같이 추출하지 않습니다.0아니면1(그들은 내 로컬 머신에서 실행했습니다).


Question:

워드프레스의 데이터베이스 값이 있다면 간단한 비교는 할 수 없습니다.0아니면1:

if ($data[0]->Sold == 1) { //Always false
...
if ($data[0]->Sold == 0) { //Always false

값이 다음과 같은지 확인하려면 어떻게 해야 합니까?01?


Background:

This was not an issue on my local machine, but only in production.

I query the database like this:

$data = $wpdb->get_results("...");

내가 할 때는.var_dump()데이터베이스의 결과에 따라 브라우저가 보여주는 출력은 다음과 같습니다.

array(1) {
  [0] => object(stdClass)#261 (10) {
    ["SaleID"]     => string(4) "1561"
    ["BookID"]     => string(2) "45"
    ["MerchantID"] => string(1) "1"
    ["Upload"]     => string(19) "2012-11-20 15:46:15"
    ["Sold"]       => string(1) ""
    ["Price"]      => string(1) "5"
    ["Condition"]  => string(1) "5"
    ["Written"]    => string(1) ""
    ["Comments"]   => string(179) "<p>I am the first owner of this barely used book. There aren't any signs of normal wear and tear, not even any creases on the cover or any of its pages. It would pass for new.</p>"
    ["Expiring"]   => string(19) "2013-05-20 15:46:15"
  }
}

방법을 주목합니다.Sold그리고.Written줄의 크기를 나타내다1, 연관된 가치는 없습니다이 값은 다음 값으로 채워야 합니다.1그리고.0,각각 다음과 같다.

The Chrome inspector tool shows something quite interesting for these values:

enter image description here

enter image description here

뭐가\u1아니면\u0그리고 왜 그들은 단순하게1아니면0, 비교해 볼 수 있게요?

Thank you for your time.

Check this answer out: https://stackoverflow.com/a/5323169/794897

"When you select data from a MySQL database using PHP the datatype will always be converted to a string."

You can either do:

if ($data[0]->Sold === "1") { 
...
if ($data[0]->Sold === "0") { 

or type cast the variable, e.g.

$Sold = (int) $data[0]->Sold;

if ($Sold === 1) { 
...
if ($Sold === 0) { 

For me the solution was to use ord function: http://us1.php.net/manual/en/function.ord.php

Edit

Yet the behavior seems to differ depending on the server. On Arch Linux with MariaDB 10.0.14 and Ubuntu with MySQL 5.5.37-0ubuntu0.13.10.1 wpdb returns good old "0" or "1" strings, not the problematic bit-strings, which happen on CentOS 6.4 MySQL 5.1.73

ReferenceURL : https://stackoverflow.com/questions/18568324/wordpress-database-class-mysql-type-bit

반응형