-1

このコードでは、2 つの列を持つデータベースを検索しようとしています。一致するものの 1 つ (会社名。これは POST を使用して JavaScript から送信されました) に基づいて、それらの 11 のペアを取得します。次に、JSON データを作成しようとしています。

<?php
header("Content-Type: application/json");
$db = new PDO('mysql:host=localhost;dbname=pl;charset=UTF-8', 'user', 'password');
if(isset($_POST['companyname']) == true && empty($_POST['companyname']) == false) {

    $searchterm = $_POST['companyname'];
    $i=0;
    $jasondata = '{';

    $query = $db->query("SELECT companyname, axiscategory FROM axispl WHERE companyname LIKE '$searchterm%' LIMIT 11");
    $c = 1;
    while (($row=$query->fetchAll(PDO::FETCH_ASSOC)) !==false && $c<11) {
        $i++;
        $companyname = $row["companyname"];
        $axiscategory = $row["axiscategory"];
        $jasondata .='"combi'.$i.'":{"companyname":"'.$companyname.'","axiscategory":"'.$axiscategory.'"},';
        $n=$row['companyname'];
        $l=strlen($n);
        if($l>50){$c = $c+2;}else{$c = $c+1;}       

    }
    $jasondata = chop($jasondata, ",");
    $jasondata .= '}';
    echo $jasondata;

}   
?>
4

1 に答える 1

1

何を変えるべきですか?先ほど使用について述べjson_encodeましたが、Charles がセキュリティの脆弱性を指摘したのは当然のことです。

また、コードのフォーマットにも取り組みたいと思います。私の推奨事項は、適度な余裕を持って作業することです。これは、歴史的な理由から以前は 80 文字でしたが、現在は 100 ~ 120 文字が適切な制限です。これは、複数のコード ビューアーを画面上で左から右に並べて、それぞれを水平方向にスクロールする必要がないことを意味します。また、問題をラッピングすることなく、同様に StackOverflow に投稿できます。

あなたのこのスニペットを考えてみましょう:

$query = $db->query("
    SELECT
        companyname, axiscategory
    FROM
        axispl
    WHERE
        companyname LIKE '$searchterm%'
    LIMIT 11
");

また:

$db = new PDO(
    'mysql:host=localhost;dbname=pl;charset=UTF-8',
    'user',
    'password'
);

もっと読みやすくね?私のモットーは、コードに余裕を持たせることです

于 2012-12-23T17:39:29.400 に答える