2017-11-10 18 views
0

こんにちは、私は何かが不足していると確信していますが、なぜこれが動作していないのかわかりません!だから私はテーブルといくつかのデータを持っている、私は画像の列を取得しようとしているが、何らかの理由で、それは動作していません。データベースからWordpress wpdbの結果が得られません

これは私が(空のURL)を取得していますものです:あなたはとしてそれを使用する必要がありますので

<?php 

global $wpdb; 

$tablePacks = 'packs'; 

$res = "SELECT * FROM ".$tablePacks." where nom_pack_get = '".$_GET["pack"]."'"; 

$packImg = $wpdb->get_results($res, ARRAY_A); 

if(count($packImg) == 1){ 
    ?> 
    <div class="forma_reservas_datos_imagen imgPack" style="background-image:url(<?php echo $packImg->imatge_url; ?>)"> 
<?php 

} 

?> 
+2

あなたのコードは[** SQLインジェクション**](https://en.wikipedia.org/wiki/SQL_injection)攻撃に対して脆弱です。あなたは[** mysqli **](https://secure.php.net/manual/en/mysqli.prepare.php)または[** PDO **](https ://secure.php.net/manual/en/pdo.prepared-statements.php)ドライバ。 [**この記事**](https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)には、いくつかの良い例があります。 –

+0

ありがとうPDOのことについてよく知らないので、いつかウェブサイトがすべてセットアップされ、動作しているときにいつか実装するつもりです。 – JJCarlk3

+0

しないでください。 PDOを学ぶ、簡単です。それ以外の場合は、感染したWebサイトをバックアップから復元する方法を学習します。 –

答えて

1

$packImg

<div class="forma_reservas_datos_imagen imgPack" style="background-image:url()"></div> 

PHPは、ノーオブジェクト連想配列の配列となります$packImg[0]["imatge_url"]

コメントに他の人が指摘しているように、SQLインジェクションに注意してください。 wpdb's prepare method使用します

$res = $wpdb->prepare("SELECT * FROM ".$tablePacks." where nom_pack_get = %s", $_GET["pack"]); 

prepareがデータベースに送信しても安全であるSQLを返します(そして、あなたが'" . $myvar . "'すべての時間を入力する必要はありません、それは本当に多くのことができますし、同じでセキュアなコードを作ります時間)。

+0

ありがとうございます。私はそれを試してみて、それが動作するかどうかをお知らせします。あなたはおそらく私はpdoとSQLインジェクションを学ばなければならないでしょう。それは私のような普通の中小企業だと思うのですが、なぜ誰かがそれをハックしたいのですか?しかし、ええ、私はそれが誰にも起こると思います。 – JJCarlk3

+0

それは完璧に動作します!ありがとうございました! – JJCarlk3

+0

それはうまく動作します。そして、SQLインジェクションに関しては、おそらくあなたが特別にターゲットとされるわけではないでしょう。しかし、ウェブサイトを大量にチェックするだけのボットがあり、クエリ文字列を介して渡された変数を操作し、その結果を所有者に報告します。あなたのドアがロックされているかどうかを確認し、ロックを解除しようとするのではなく、あなたの家に侵入することが価値があるかどうかを決めるだけのようなものだと考えてください。 – janh