PHP-for字符串中的语句

PHP-for字符串中的语句,php,mysql,string,for-loop,Php,Mysql,String,For Loop,我有一个我想要执行的MySQL语句,在这个语句中,我想包含一个for循环来定义数据将被输入的列等 我目前拥有的代码是 $stmt = $conn->prepare('INSERT into DATA ('. for($i = 0; $i < count($columns); $i++) { echo $columns[$i]; } .') VALUES ('. for($i = 0; $i < count($columns); $

我有一个我想要执行的MySQL语句,在这个语句中,我想包含一个for循环来定义数据将被输入的列等

我目前拥有的代码是

$stmt = $conn->prepare('INSERT into DATA ('.
    for($i = 0; $i < count($columns); $i++) {
        echo $columns[$i];
    }
    .') VALUES ('.
    for($i = 0; $i < count($columns); $i++) {
       echo ':'.$columns[$i].' , ';
    }
    .')');
$stmt=$conn->prepare('INSERT into DATA(')。
对于($i=0;$i
显然,这不起作用,但如果它在第二个for语句中也起作用,它会在每个循环的末尾回显一个逗号,这将导致最后一个循环出错,那么有没有办法解决这个问题

提前谢谢

使用以下功能:

$params = array_map(function($var){return ':'.$var;}, $columns);
$sql = 'INSERT into DATA ('.join(',', $columns).') VALUES ('.join(',', $params).')';    
$stmt = $conn->prepare($sql);
使用以下功能:

$params = array_map(function($var){return ':'.$var;}, $columns);
$sql = 'INSERT into DATA ('.join(',', $columns).') VALUES ('.join(',', $params).')';    
$stmt = $conn->prepare($sql);

您应该在prepare()函数的外部创建查询,以使其更简单

这样做会更好/更清楚:

$count = count ($columns); // Avoid using count in your loop init (Performances)
$query = 'INSERT INTO DATA (' .
for($i = 0; $i < $count; $i++) {
    $query .= $columns[$i];
}
$query .= ') VALUES (';
for($i = 0; $i < $count; $i++) {
   if ($i != $count - 1) $query.= ':'.$columns[$i].' , ';
   else $query .= ':'.$columns[$i]; // No coma for the last value
}
$query .= ')';
$stmt = $conn->prepare($query);
$count=count($columns);//避免在循环初始化中使用计数(性能)
$query='插入数据('。
对于($i=0;$i<$count;$i++){
$query.=$columns[$i];
}
$query.=')值(';
对于($i=0;$i<$count;$i++){
如果($i!=$count-1)$query.=':'.$columns[$i].';
else$query.=':'.$columns[$i];//最后一个值没有coma
}
$query.=');
$stmt=$conn->prepare($query);

您应该在prepare()函数的外部创建查询,以使其更简单

这样做会更好/更清楚:

$count = count ($columns); // Avoid using count in your loop init (Performances)
$query = 'INSERT INTO DATA (' .
for($i = 0; $i < $count; $i++) {
    $query .= $columns[$i];
}
$query .= ') VALUES (';
for($i = 0; $i < $count; $i++) {
   if ($i != $count - 1) $query.= ':'.$columns[$i].' , ';
   else $query .= ':'.$columns[$i]; // No coma for the last value
}
$query .= ')';
$stmt = $conn->prepare($query);
$count=count($columns);//避免在循环初始化中使用计数(性能)
$query='插入数据('。
对于($i=0;$i<$count;$i++){
$query.=$columns[$i];
}
$query.=')值(';
对于($i=0;$i<$count;$i++){
如果($i!=$count-1)$query.=':'.$columns[$i].';
else$query.=':'.$columns[$i];//最后一个值没有coma
}
$query.=');
$stmt=$conn->prepare($query);
另一种方法使用:

示例结果:

// Input array
$columns = array('A', 'B', 'C');

// Output
INSERT into DATA(`A`,`B`,`C`) values (:A,:B,:C)
另一种方法是:

示例结果:

// Input array
$columns = array('A', 'B', 'C');

// Output
INSERT into DATA(`A`,`B`,`C`) values (:A,:B,:C)

u可以使用内爆而不是带“,”分隔符的for循环。请您回显查询并检查查询在列中是否正常运行您可能正在打印值而不是列名。。只需使用foreachmake新变量$prepare=“INSERT INTO data(”;然后在for循环中将数据添加到taht变量中。您可以使用
内爆
函数。@DeiForm能否请您进一步解释一下?请看答案,smh喜欢那样您可以使用内爆而不是带有“,”分隔符的for循环。请您回显查询并检查查询在列中是否工作正常您可能正在打印值而不是列名…只需“echo$i;”使用foreachmake new variable$prepare=“INSERT INTO data(”),然后在for循环中将数据添加到taht variable您可以使用
内爆
函数。@DeiForm您能解释更多吗?请参见答案,类似于此