PHP中带有完整变量的动态插入
如果有人能指导我解决以下问题,我将不胜感激,我需要用变量插入MySQL数据库,下面是我的代码示例:PHP中带有完整变量的动态插入,php,insert,Php,Insert,如果有人能指导我解决以下问题,我将不胜感激,我需要用变量插入MySQL数据库,下面是我的代码示例: $valor = "$valor.", ".$total; $table = $dta.$year; $insert = "ano, id, idas".$valor2.", total"; $value = $year.", ".$id.", ".$idas.$tit2.", ".$monto3; $sql = "INSERT INTO `$table`
$valor = "$valor.", ".$total;
$table = $dta.$year;
$insert = "ano, id, idas".$valor2.", total";
$value = $year.", ".$id.", ".$idas.$tit2.", ".$monto3;
$sql = "INSERT INTO `$table` (`$insert`) VALUES (`$value`)";
一般的想法是,在程序运行之前,列的数量是未知的,因为它是动态的
以下代码用于根据需要构建表,工作正常:
while(($row = mysql_fetch_array($result)) !== FALSE)
{
$columna=$row['pn'];
$valor= $valor." pt".$columna." VARCHAR(50),";
$valor2= $valor2.", pt".$columna;
$gestion = '3';
$table = "sumag".$gestion.$year;
}
$valor= "ano VARCHAR(4), id VARCHAR(4), idas VARCHAR(13), ".$valor." "."total VARCHAR(10)";
因此,第一个代码也必须是动态的。。
我真的需要这方面的帮助,我不是一个程序员,我是根据我所学的知识构建的,所以很可能我的技术很差,如果有人能帮我,那就太好了
谢谢您已在表中声明列名为idas VARCHAR13,但insert元素声明了一些附加值idas.$valor2。。请立即检查此实例。以下是完整代码:
<?php
$gestion = 3;
$data = "SELECT * FROM progdesc where gestion = '$gestion'" or die("¡Error No existe ese departamento!");
$result = mysql_query($data) or die("¡Error No existe ese dep!");
while(($row = mysql_fetch_array($result)) !== FALSE)
{
$columna=$row['pn'];
$valor= $valor." pt".$columna." VARCHAR(50),";
$valor2= $valor2.", pt".$columna;
$gestion = '3';
$table = "sumag".$gestion.$year;
}
$valor= "ano VARCHAR(4), id VARCHAR(4), idas VARCHAR(13), ".$valor." "."total VARCHAR(10)";
#echo $table." - ".$valor;
mysql_query("CREATE TABLE `".$table."`(".$valor.")") or die(mysql_error());
//------------------------------------Insert data -----------------------------------------//
//-1--------Get Asig N°--------//
$data1 = "SELECT * FROM asigna" or die("¡Error No existe ese departamento!");
$result1 = mysql_query($data1) or die("¡Error1!");
while(($row = mysql_fetch_array($result1)) !== FALSE)
{
$id=$row['id'];
$idas=$row['idas'];
$sid=$row['sid'];
$tit2 = NULL;
$monto3 = 0;
//-2-------Get Gestion and DEPFINAL---------------------//
$data2 = "SELECT * FROM progdesc WHERE gestion = '$gestion' and ano = '$year' " or die("¡Error No existe ese departamento!");
$result2 = mysql_query($data2) or die("¡Error2!");
while(($row2 = mysql_fetch_array($result2)) !== FALSE)
{
$dep=$row2['departamento'];
$titulo=$row2['titulo'];
$depf = $dep."final";
$pn = $row2['pn'];
$sidb = $row2['sid'];
#$monto3 = 0;
#echo $pn;
//-3-------Get Program N° and create chain------------//
$data3 = "SELECT * FROM $depf WHERE ano = '$year' and idas = '$idas' and gestion = '$gestion'and programa = '$pn' " or die("¡Error No existe ese departamento!");
$result3 = mysql_query($data3) or die("¡Error3!");
while(($row3 = mysql_fetch_array($result3)) !== FALSE)
{
$monto=$row3['monto'];
if (!($idas2 == $idas and $monto == 0)){
$tit2 = $tit2.", ".$monto;
}elseif ($monto == 0){
$tit2 = $tit2.", 0";
} else {
$cero = 0;
$pn2 = 0;
If (!($monto == 0)){
for ($i = 0; $i < $pn2; $i++) {
$cero = $cero.", 0";
}
$tit2 = $tit2.", ".$cero.", ".$monto;
}
}
$idas2 = $idas;
$ln = $ln + 1;
$monto2 = $monto;
$monto3 = $monto3 + $monto;
}
}
$insert = "ano, id, idas".$valor2.", total";
$value = $year.", ".$id.", ".$idas.$tit2.", ".$monto3;
$sql = "INSERT INTO `$table` (`$insert`) VALUES (`$value`)";
myquery($sql); }
我只是想明确我不是一个程序员,我知道我的代码在任何方面都不符合标准,我被迫完成这项任务只是因为我有点懂编程,这就是为什么我寻求帮助,如果有其他方法来完成任务,很好,谢谢大家,到目前为止都有回应,我感谢您的耐心。语法突出显示表明您有语法错误;检查一下。你有很多。你没有检查错误。然后回来告诉我们这些是什么;再说一次,你有很多。如果你只是想回答问题,那就和他们呆在一起。我退出了。是的,现在我展示了我完全同意@Fred ii您尝试打印您的查询并在数据库中手动执行可能是您应该尝试一下您会得到您的答案扫描您澄清您在代码中编辑了什么?OP错了什么?好的$valor是一个插入了coma的值,您可以在代码顶部修改它。想法是执行以下操作,而不是像这样在插入中使用固定值:insert TableX value1、value2、value3'$value1'、'$value2'、'$value3';插入$table$value1$value2;我想知道是否可以回显代码来执行它。。类似于:echo“$sql=INSERT-INTO'$table..$INSERT.'VALUES'.$value.;”;