代码之家  ›  专栏  ›  技术社区  ›  adardesign

尝试构建一个动态php mysql_查询字符串来更新一行并返回更新的行

  •  3
  • adardesign  · 技术社区  · 14 年前

    我有一个jquery跟踪onchage的表单 .change() 事件,因此当发生更改时,它会运行一个Ajax请求,我会传递列、ID和URL中的值。

    这里我有了应该更新数据的PHP代码。

    我现在的问题是如何动态构建MySQL字符串。 我如何回送刚才在数据库上更改的更改/更新。

    下面是我要使用的PHP代码。

    <?php require_once('Connections/connect.php'); ?>
    
     <?php  
        $id = $_GET['id'];
        $collumn = $_GET['collumn'];
        $val = $_GET['val'];
     ?>
    
    
    <?php 
        mysql_select_db($myDB, $connection);
    
      // here i try to build the query string and pass in the passed in values
       $sqlUpdate = 'UPDATE `plProducts`.`allPens` SET `$collumn` = '$val' WHERE `allPens`.`prodId` = '$id' LIMIT 1;';
    
      // here i want to echo back the updated row (or the updated data) 
      $seeResults = mysql_query($sqlUpdate, $connection);
      echo  $seeResults
    ?>
    

    这个例子可以吗?

    $sqlUpdate = 'UPDATE `plProducts`.`allPens` SET "{$collumn}" = "{$val}" WHERE `allPens`.`prodId` = "{$id}"LIMIT 1;';
    
    1 回复  |  直到 14 年前
        1
  •  3
  •   Jacob Relkin    14 年前

    使用字符串串联运算符 . .

    $sqlUpdate = 'UPDATE `plProducts`.`allPens` SET `' . $collumn .'` = \'$val\' WHERE `allPens`.`prodId` = '. $id . ' LIMIT 1;';
    mysql_query(mysql_escape_string($sqlUpdate));
    

    当然,这会导致 SQL injection 漏洞。