2016-07-03 9 views
0

私はユーザー名と伝記のための単純なupadateフォームを作成したいと何かが紛失していると私は更新ができません、私は空白のページを取得し、私は何も更新をリロードするときにこれはワードプレスのウェブサイト上のコードです:Wordpress SQLクエリの更新

[insert_php] 
global $current_user; 
global $wpdb; 


$result = $wpdb->get_results("SELECT * FROM wpah_users WHERE ID=$current_user->ID"); 
foreach($result as $row) 
{ 
echo "<form action='' method='post'>"; 
echo "<br><br><br>"; 
echo "<p>Name: &nbsp;&nbsp;&nbsp; " .$row->wpah_users ." "."<input  type='text' id='name' Name='name'value='$row->user_nicename'/> "." </p><br> "; 
echo "<p>Biography: &nbsp;&nbsp;&nbsp; " .$row->wpah_users ." "."<input type='text' id='Biography' name='Biography' value='$row->Biography'/> "." </p><br> "; 
echo "<input type='submit' name='show' id='show' value='Upvote'>"; 
    echo '</form>'; 
} 
if(isset($_POST['show'])){ 
    $name=$_POST["name"]; 
    $biography=$_POST["Biography"]; 



$sql ="UPDATE $wpah_users 
    SET ".$Biography."`= '$Biography', WHERE `".$ID."` = '$current_user->ID'"; 
$rez = $wpdb->query($sql); 


} 
[/insert_php] 
+1

コードを正しくインデントしてください。 – PaulH

+1

あなたは[SQL Injections](http://php.net/manual/en/security.database.sql-injection.php)を広く読んでいます。 Wordpressを使用しているので、[Data Valdiation](https://codex.wordpress.org/Data_Validation#Database) –

+0

Btwを調べると、列名をハードコードする必要があります。 '$ Biography'の値としてカラム名と値を設定し、' $ ID'も定義されていないようです –

答えて

0

多くの問題があります。

  1. SQL injectionData Validationにコメントが実際には、トローリングされていない...後者は良いコーディング標準の縮図です。
  2. 私たちは助けて、あなたと他の人たちに多くの問題をもたらす悪いコーディングを援助し埋め込むことはしません。
  3. あなたのコードはよく書かれていると仮定しています。たとえば、WHERE ".$ID."には識別子「.」が含まれています。私の知る限りでは、phpはそれをサイドIDの別のオブジェクトを呼び出すものとして認識します。おそらくそれを意味するかもしれませんが、これはSQLであり、あなたはDynamic Queryを使用しています。 SQLSQLのルールで実行されます。
  4. いずれかの列が@変数である場合は、適切に動作するためにはSQLで検証する必要があります。私はDynamic SQL - MSDNを調べて、SQLが文字列と変数をどのように見ているかを理解することをお勧めします。
  5. sp_executesql - MSDNを使用してください。クエリ自体はユーザーに公開されておらず、SQL Injectionが不可能なように各変数を適切に検証します。

  6. あなたはカーソルとしてリレーショナル言語を扱っています。どうして? SQLは、結果セット全体を一度に返すことができます。 SQLを使用してください。

これらのヒントは、あなたの解決策を見つけるのに役立ちます。 よろしく、