【问题标题】:What is the purpose of strlen($query)-2;strlen($query)-2 的目的是什么?
【发布时间】:2015-04-25 07:37:13
【问题描述】:

我从谷歌得到这段代码,它满足我的要求,但我不明白这一行的含义:

substr($query,0,strlen($query)-2)

谁能给我解释一下?

<?php
function insert($tablename, $parameter_order, $values)
{
    $query = "insert into $tablename (";
    foreach($parameter_order as $po)
    {
        $query .= $po.', ';
    }
    $query = substr($query,0,strlen($query)-2).') values (';
foreach($values as $v)
{
$query .= "'$v', ";
}
$query = substr($query,0,strlen($query)-2).');';
    return $this->makeQuery($query);
}
?>

【问题讨论】:

  • 你明白substrstrlen各自在做什么吗?然后,当您将它们放在一起时,它们的作用应该很明显。
  • 你真的不应该使用这个,而是切换到准备好的语句。
  • @jeroen 列名不能使用占位符。
  • @Barmar 没错,您还需要一个白名单。对于表名也是如此。就像我说的,不要使用这个:-)
  • 你们能帮我写代码吗?

标签: php substr strlen


【解决方案1】:

这正是这些函数所做的:

substr()用于从另一个字符串生成指定长度的子字符串。

strlen() 将返回提供的字符串的长度。

代码substr($query,0,strlen($query)-2)foreach 循环中删除逗号空格

【讨论】:

    【解决方案2】:

    该行删除了$query 中的最后一个逗号和空格。这些字符已添加到 foreach 循环中以将 $parameter_order 的元素粘合在一起。

    请注意,使用implode() 函数通常可以更好地完成此标准任务:

    $query = "insert into $tablename (" . implode (', ', $parameter_order) . ' ) values (';
    

    【讨论】:

    • 你把我弄糊涂了.. 这行在我的代码中完全适合
    • @ManiKandan:我写这行是为了让你学习,而不是把它放在你的代码中。如果要连接数组的元素,通常使用类似的语句而不是 foreach 循环。如果你不知道我在说什么,也许你应该从一些基本的 PHP 教程开始。
    猜你喜欢
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    相关资源
    最近更新 更多