sql >> データベース >  >> RDS >> Mysql

PHPを使用して文字列内の単一引用符(アポストロフィ)をエスケープする方法

    答えはあなたがする必要はないということです。 PDOの準備を使用する適切な方法は次のとおりです。

    $stmt = $pdo->prepare(
       "SELECT * FROM `products_keywords` WHERE `product_type` = ?");
    

    これが、プリペアドステートメントを使用することの要点です。次に、バインド します。 パラメータは次のとおりです:

    $stmt->bindParam(1, $product_type)
    

    証明、

    スキーマ:

    create table `products_keywords`
    (   `id` int not null,
        `products_keywords` varchar(1000) not null,
        `product_type` varchar(100) not null
    );
    insert `products_keywords` (`id`,`products_keywords`,`product_type`) values  
    (1,'zoom lawn cut mower',"Lawn Mower"),
    (2,'stylish torso Polo','Men\'s Shirt');
    

    データの表示:

    select * from `products_keywords`;
    +----+---------------------+--------------+
    | id | products_keywords   | product_type |
    +----+---------------------+--------------+
    |  1 | zoom lawn cut mower | Lawn Mower   |
    |  2 | stylish torso Polo  | Men's Shirt  |
    +----+---------------------+--------------+
    

    PHP:

    <?php
        // turn on error reporting, or wonder why nothing is happening at times
        error_reporting(E_ALL);
        ini_set("display_errors", 1);    
    
        $servername="localhost";
        $dbname="so_gibberish";
        $username="nate123";
        $password="openSesame1";
    
        try {
            $pdo = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    
            $product_type="Men's Shirt";
            $stmt = $pdo->prepare("SELECT * FROM `products_keywords` WHERE `product_type` = ?");
            $stmt->bindParam(1, $product_type);
            $stmt->execute();
            while($row = $stmt->fetch()) {
                echo $row['id'].", ".$row['products_keywords'].", ".$row['product_type']."<br/>";
            }
        } catch (PDOException $e) {
            echo 'pdo problemo: ' . $e->getMessage();   // dev not production code
            exit();
        }
    ?>
    

    ブラウザ:



    1. PHPは、MySQLクライアントよりもクエリの実行に90倍の時間がかかります

    2. JDBCを使用してJavaでレポートを作成し、SQL日付とJavaユーティリティ日付の間で変換を試みます

    3. MySQLデータベースに電話番号を保存する方法は?

    4. java.sql.SQLException:内部表現への変換に失敗しました:ArrayListをOracle.sql.ARRAYに渡している間