Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将2个下拉列表添加到关联表_Mysql_Drop Down Menu - Fatal编程技术网

Mysql 将2个下拉列表添加到关联表

Mysql 将2个下拉列表添加到关联表,mysql,drop-down-menu,Mysql,Drop Down Menu,我在尝试使用2个下拉列表添加记录时遇到问题。 我有一个名为url的表,其中包含url的详细信息。我有一个名为category的表填充下拉列表,还有一个名为publisher的表填充另一个下拉列表 $query = 'INSERT INTO url_associations (url_id, url_category_id, approved, url_publisher_id) VALUES '; foreach ($_POST['types'] as $

我在尝试使用2个下拉列表添加记录时遇到问题。 我有一个名为url的表,其中包含url的详细信息。我有一个名为category的表填充下拉列表,还有一个名为publisher的表填充另一个下拉列表

            $query = 'INSERT INTO url_associations (url_id, url_category_id, approved, url_publisher_id) VALUES ';
        foreach ($_POST['types'] as $v){
            $query .= "($uid, $v, 'Y', $k), ";
        }
        $query = substr ($query, 0, -2); // Chop off the last comma and space.

        $result = @mysql_query ($query); // Run the query.

        if (mysql_affected_rows() == count($_POST['types'])) { // Query ran OK.

            echo '<p><b>Thank you for your submission!</b></p>';
            $_POST = array(); // Reset values.

        } else { // If second query did not run OK.
$query='插入url\关联(url\ id、url\类别\ id、已批准、url\发布者\ id)值';
foreach($_POST['types']作为$v){
$query.=“($uid,$v,$Y',$k),”;
}
$query=substr($query,0,-2);//切掉最后一个逗号和空格。
$result=@mysql_query($query);//运行查询。
如果(mysql_impact_rows()==count($_POST['types']){//Query运行正常。
回声“感谢您的提交!

”; $\u POST=array();//重置值。 }else{//如果第二个查询未运行,则返回OK。

上面的代码允许我使用categories下拉列表添加数据,但当我尝试将url_publisher_id作为'posters'添加为$k时,我的解析过程中不断出现错误。如果有人能理解我试图实现的目标,欢迎您提供帮助。

如果您的$k变量的值不是整数或浮点值,您将得到一个e错误,因为在构建SQL INSERT语句时需要在其周围加引号:

$query .= "($uid, $v, 'Y', '$k'), ";

注意:您的示例中存在一些主要的安全问题。如果您将来自$\u POST的用户输入放入SQL而不转义,则用户可以在数据库上运行任何SQL命令。

我添加了一个额外的数组foreach($\u POST[posters]作为$k)

//它是这样写的

'foreach($_POST[types]为$v) foreach($_POST[海报]为$k){`

它执行得非常完美

谢谢你的帮助


Sean

谢谢,但我的问题是在代码$\u POST['types'中声明变量$k作为$v.decarres类别id'types'作为$v,我如何将url\u publisher\u id作为变量'posters'作为$k执行相同的操作。我尝试将url\u publisher\u id添加到行中以包含该url\u publisher\u id,但没有成功。我现在的错误是未定义的变量k,然后导致一个不正确的整数值。我在尝试添加url\u publisher\u id时遇到问题k变量。谢谢你感谢dellsala强调了安全问题,我将对此进行研究以找到更安全的解决方案。我想我不理解你的问题。你能解释一下“我在解析过程中不断出错”是什么意思吗?您好,感谢dellsala的耐心。注意:未定义变量:k不正确的整数值:“”对于第1行的“url\u publisher\u id”列,查询:插入url\u关联(url\u id,url\u category\u id,approved,url\u publisher\u id)值(35,1,'Y','')我理解声明变量的必要性,我已尝试扩展该行-foreach($\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\和其他变体来添加这两个下拉列表。希望这有帮助。如果没有,我可以通过电子邮件向您发送完整的代码。嗨,delsala,这是我试图实现的,但会导致错误//构建查询。$query='插入url\关联(url\ id、url\类别\ id、已批准、url\发布者\ id)值';foreach($\ POST['types']作为$v)和($\u POST['posters']作为$k)){$query.=”($uid,$v,'Y','$k'),“;}$query=substr($query,0,-2);//切掉最后一个逗号和空格。$result=@mysql\u query($query);//运行查询。如果(mysql\u受影响的行()==count($\u POST['types'))和($\u POST['POST['posters'))//查询运行正常。echo'谢谢您的提交!

$\u POST=array();//重置值。