dongxing2692 2014-12-03 21:54
浏览 56

PHP PreparedStatements字段名称

Is there a way you can set field names in php prepared statements, instead of just setting there values, for example,

$stmt = $mysqli->prepare("UPDATE movies SET filmName = ?, 
   filmDescription = ?, 
  filmImage = ?,  
  filmPrice = ?,  
  filmReview = ?  
   WHERE filmID = ?");
$stmt->bind_param('sssdii',
  $_POST['filmName'],
  $_POST['filmDescription'],
  $_POST['filmImage'],
  $_POST['filmPrice'], 
  $_POST['filmReview'],
  $_POST['filmID']);
 $stmt->execute(); 
$stmt->close();

is there a simpler way to do that? For example, is there a way I can do something like

 $stmt->bind_param($_POST);

so it binds everything in with the correct names?

  • 写回答

1条回答 默认 最新

  • doumiebiao6827 2014-12-03 22:49
    关注

    I hope this helps. I did not test, but if I missed something, please comment and I will edit.

    $sql = "UPDATE 
                movies 
            SET 
                filmName = ?, 
                filmDescription = ?, 
                filmImage = ?,  
                filmPrice = ?,  
                filmReview = ?  
            WHERE 
                filmID = ?";
    
    $arrayFields = array("filmName" => "s"
                        , "filmDescription" => "s"
                        , "filmImage" => "s"
                        , "filmPrice" => "d"
                        , "filmReview" => "i"
                        , "filmID" => "i");
    
    $stmt = $mysqli->prepare($sql);
    
    foreach($_POST as $key=>$val) {
    
        if(array_key_exists ( $key , $arrayFields )) {
    
            $stmt->bind_param($arrayFields[$key], $_POST[$key]);
        }
    }
    $stmt->execute();   
    
    $stmt->close();
    
    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?