PHP MS SQL select
//列全体の値をすべて取得し、2 次元配列に変換します。
関数 getAll($sql) {
$query=mssql_query($sql);
if($query) {
$temp=array();
while($res=mssql_fetch_assoc($query)) {
$temp[ ] = $ res;
}
Return $ Temp;}}
Else {
Return false;
$ result = "select zdmc from qx where jsid = 9 and TCMC = '$ DITCBO =' $ DITCBO 'And kj = 1 " ;
$arr=getALL($result);
//二次元配列を一重引用符とカンマで区切られた文字列に変換します
for($i=0;$i
$array[] = $arr[$i]["zdmc"]
}
$r="'".implode("','", $array )."'";この文字列はテーブルでクエリされます
$result2 = mssql_query("SELECT $r FROM $sjb WHERE ID='$bh'");
$row = mssql_fetch_array($result2)
が表示されます結果は
コードが文字化けしているのは、これが mmsql の gbk エンコードを読み取っているためです。使用するときに変換しますが、読み込まれた内容が正しくありません
これは初心者のライターです、助けてください
に返信します。議論 (解決策)
$r = '[' . implode("],[", $array ) . ']'; $r はフィールドリストなので一重引用符で囲まれませんか?文字列になるの?
スクリーンショットを見ると、ほとんどのフィールド名が中国語になっています。このように、フィールド名を [] で囲む必要があります。SQL サーバーマネージャーで確認できます
フィールド名を角括弧で囲み、カンマで区切るという意味ですか?
いただいたエラー メッセージをコピーしました
エラーを報告するときは、エラー メッセージが表示されます
function getAll($sql) {
$query=mssql_query($sql) {
$ temp =array(); else{
return false;
}
}
$result ="SELECT zdmc FROM QX WHERE jsid=9 および tcmc='$ditcbo' および kj=1"
$arr=getALL($結果);
for($i=0;$i $array[] = $arr[$i]["zdmc"];
}
$r = '[ ' . implode("],[", $array ) . ']'
/$r="'".implode(",", $array )."'"; FROM $sjb WHERE ID='$bh'");
$row = mssql_fetch_array($ result2);
print_r($row)
申し訳ありませんが、もう一度助けてください
誰があなたの汚いテクスチャをはっきりと見ることができますか?
$r = '[' . implode("],[", $array ) . ']';
echo gettype($r);
$r utf8 を中国語の結果として表示しますそれ
その後、元の gbk エンコーディングを使用してテーブルはテストされ、どこに問題があるのかわかりません。
$r = '[' . implode("],[", $array ) . ']'
$result2 = mssql_query("SELECT $r FROM $sjb ID='$bh'"); = mssql_fetch_array($result2);
print_r($row)
最初のスクリーンショットの文字列はどこから来たのでしょうか?
中国語の mssq を扱う場合は、gbk エンコーディングを使用することをお勧めします
echo gettype($r);
これが異なる動作をする場合は、他の方法を考える必要があります