doyrte8419 2012-09-14 21:39
浏览 43
已采纳

评估目的| SQL转换?

I store my sql queries as strings and then use them later in PDO as shown below.

There is one line that I don't understand:

eval("\$query = \"$query\";");

From the docs..eval should run a string as PHP code. Why can't I just use $query directly? What does it mean to run a string of SQL?

This code works. I just don't know what eval() statement is for.

Note this is safe eval() as the input is not user defined.

    "arc_id" =>                 "SELECT id FROM credentials WHERE email=?",
    "arc_id_from_hash" =>       "SELECT id FROM credentials WHERE pass=?",
    "signin_pass" =>            "SELECT pass FROM credentials WHERE email=?",
    "signin_validate" =>        "SELECT id, hash FROM credentials WHERE email=? AND pass=?"
);
public function __construct()  
{
    $this->db_one = parent::get();
}
public function _pdoQuery($fetchType, $queryType, $parameterArray=0) // needs review
{
    $query=$this->sql_array[$queryType];

    // what?

    eval("\$query = \"$query\";");

    // if not input parameters, no need to prep

    if($parameterArray==0)
    {
        $pdoStatement = $this->db_one->query($query);
  • 写回答

2条回答 默认 最新

  • duandeng1824 2012-09-14 21:53
    关注
    eval("\$query = \"$query\";");
    

    This is a variable replacer/templating engine.

    It is replacing variables inside $query with their values.

    I suggest not using eval for this, it'd probably be better to use preg_replace or str_replace.

    For reference, here's a question I asked: PHP eval $a="$a"?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c