私のプロジェクトは、データベースを読み取って電子メールを送信する webapp です。今日データベースを挿入しましたが、「例」では正常に機能していましたが、実際の行ほど多くの行がありませんでした。
私の問題は、私が行うクエリの 1 つの何か (データベース側) が $results を空にすることです。
$selected_category = (isset($_POST['category'])) ? $_POST['category'] : null;
$group = (isset($_POST['group'])) ? $_POST['group'] : null;
if ($selected_category) {
if ($selected_category && $group) {
//para se for selecionado o grupo
if ($selected_category == "-1") {
//para todas as categorias juntas
if ($group == "-1") {
$results = DB::query("SELECT category, name, email FROM clients LIMIT 100");
} else {
$results = DB::query("SELECT category, name, email FROM clients LIMIT %i, 100",$group );
}
} else {
//para as categorias
if ($group == "-1") {
$results = DB::query("SELECT category, name, email FROM clients WHERE category = %i LIMIT 100", $selected_category );
} else {
$results = DB::query("SELECT category, name, email FROM clients WHERE category = %i LIMIT %i, 100", $selected_category, $group );
}
}
error_log(mysql_error());
echo json_encode($results);
} else {
//para se for selecionada a categoria
//se for -1 manda todas as categorias
if ($selected_category == "-1") {
//MAL
$count = DB::query("SELECT COUNT(category) AS cat FROM clients");
$count["category"] = "all";
echo json_encode($count);
//$results = DB::query("SELECT category, name, email FROM clients");
} else {
$count = DB::query("SELECT COUNT(category) AS cat FROM clients WHERE category = %i", $selected_category );
//$results = DB::query("SELECT category, name, email FROM clients WHERE category = %i", $selected_category );
$cat = DB::query("SELECT name FROM categories WHERE super_id = %i", $selected_category);
$count["category"] = $cat;
echo json_encode($count);
}
}
//echo json_encode($results);
}
これがエラーだと思う部分です。変更する変数は$categoryであり、クエリ ( $group )で制限を選択することに注意してください。
実用的な例は、$selected_category = -1 (すべてのカテゴリが必要であることを意味します) を作成し、$group = -1 (最初の 100 行) または $group = 100 (100º 行の後の 100 行) を作成する場合です。 mysql は正しい値を返します。しかし、$group = 200 (行 200º の後の 100 行を選択するため) を作成すると、mysql は何も返さず、空の array を取得します。
私のデータを破損している可能性があるという考えを持っている人はいますか? 私はすでにそれをトリミングしましたが、何もしませんでした。私は本当に立ち往生しており、次の金曜日までこれを終わらせる必要があります。そうしないと支払いがありません!
皆さん、ありがとうございました!そして、誰かが私を助けてくれることを願っています。
編集:
だから、私はすでにやった:
1 -この回答
に続いて、データベースを utf-8 に変更しました。2 -latin1
meekrodb ファイルにある 2 行をutf8
;
に変更しました。3 - ut8_encode php 関数を $results に追加しました
$json = utf8_encode(json_encode( $results ));
if ( $json === false ) echo "ERROR: " . json_last_error_msg(); else echo $json;
utf_8 json エラーはなくなりましたが、$results はまだ空です。
EDIT2 私はこれをすべて本番サーバーに渡し、何を推測します....それは機能します。いまだに理解できないことがあります。私の問題に時間を割いてくれてありがとう!:)