Wordpress sql查询更新


Wordpress sql query update

为什么我想为用户名和传记制作一个简单的更新表单,但有些东西丢失了,我无法更新,我得到了一个空白页面,当我重新加载时,没有任何更新,所以这是我在wordpress网站上的代码:

[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. 事实上,对SQL injectionData Validation的评论并不是恶意的。。。后者是良好编码标准的缩影
  2. 我们听到的是帮助,而不是帮助和嵌入糟糕的编码,这会给你和其他人带来很多麻烦
  3. 您假设您的代码写得很好。例如,WHERE ".$ID."包含一个标识符".",据我所知,php会将其识别为调用侧ID中的另一个对象。也许你是这个意思,但这是SQL,并且你正在使用Dynamic QuerySQL按照SQL的规则运行
  4. 如果任何列都是@variables,那么它们需要在SQL中进行验证才能正常工作。我建议您查阅DynamicSQL-MSDN来了解SQL是如何看待字符串和变量的
  5. 在查询中使用sp_executesql-MSDN。查询本身不向用户公开,它正确地验证了每个变量,因此SQL Injection是不可能的。

  6. 您将关系语言视为光标。为什么?SQL能够一次返回整个结果集。按照预期用途使用SQL

希望这些提示能帮助您找到解决方案。问候,