在sql查询中使用php变量

时间:2013-12-25 13:03:33

标签: php mysql sql

在我的php脚本中,我在sql查询中使用了一个php变量.php变量通过post变量获取其值,如下所示:

$desc0=$_POST['desc0'];
$desc1=$_POST['desc1'];
$desc2=$_POST['desc2'];
$desc3=$_POST['desc3'];
$desc4=$_POST['desc4'];
$desc5=$_POST['desc5'];
$desc6=$_POST['desc6'];
$desc7=$_POST['desc7'];
$desc8=$_POST['desc8'];
$desc9=$_POST['desc9']; 

查询是:

for($i=0;$i<10;$i++)
{
$q="insert into photos(name,category,description) values ('{$name{$i}}','$category','{$desc{$i}}')";
}

问题是,在提交表单时,我收到错误消息 “undefined variable desc”。 因此它没有从先前定义的变量中获取值? 有什么帮助吗?

2 个答案:

答案 0 :(得分:3)

首先,您的代码完全不安全 - 您不应将用户数据直接传递到查询中。关于它的主题很多,this是一个良好的开端。

接下来,您不需要以如此奇怪的方式存储数据。如果你想传递20张照片怎么办?在HTML中,将您的字段命名为photos[] - 在PHP中,您的值将被正确解析为数组$_POST['photos'],因此您将能够使用数组:

$photos = $_POST['photos'];
foreach($photos as $photo)
{
   //$photo contains certain item, so handle it with your logic
}

最后,您的问题是因为使用大括号进行数组解除引用的PHP可能性不明显。因此,$desc{$i}尝试访问不存在的数组$i的{​​{1}}索引。使用$desc或使用连接来分隔变量。

答案 1 :(得分:0)

您必须将$desc{$i}更改为${"desc" . $i}