7

Wordpress 内で WPDB オブジェクトを使用して、MySQL データベースと通信しています。私のデータベースには のタイプの列がありますがbit(1)、Wordpress はこれらを として抽出せず、実稼働サーバーで抽出し0ません1(ローカル マシンで抽出しました)。


質問:

0Wordpress からデータベースの値を取得した場合、 orと単純に比較することはできません1

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

値が0であるかどうかを確認するにはどうすればよい1ですか?


バックグラウンド:

これは私のローカル マシンでは問題ではなく、本番環境でのみ発生しました。

次のようにデータベースにクエリを実行します。

$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、関連付けられた値がありません。これらの値には、それぞれと を入力する必要があります。Written110

Chrome インスペクタ ツールは、これらの値について非常に興味深いことを示しています。

ここに画像の説明を入力

ここに画像の説明を入力

\u1またはとは何ですか?\u0なぜ単純に1または0ではないので、比較できますか?

お時間をいただきありがとうございます。

4

2 に答える 2

0

私にとっての解決策は ord 関数を使用することでした: http://us1.php.net/manual/en/function.ord.php

編集

ただし、サーバーによって動作が異なるようです。MariaDB 10.0.14 を搭載した Arch Linux および MySQL 5.5.37-0ubuntu0.13.10.1 を搭載した Ubuntu では、 wpdb は、CentOS 6.4 MySQL 5.1.73で発生する問題のあるビット文字列ではなく、古き良き「0」または「1」文字列を返します。

于 2014-11-21T12:18:22.410 に答える