在mysql_query中使用变量作为数组元素编号

时间:2014-07-07 15:18:58

标签: mysql arrays variables numbers element

如果问题有点令人困惑,我很抱歉,尽量让它变得清晰 基本上,我有这个代码:

for($i = 0;$i < 5;$i++)
    {
        $query = mysql_query("INSERT INTO words (lecture, pol, ukr) VALUES ($lecture, $pol_text[$i], $ukr_text[$i])", $db) or die("Data not inserted");
    }

我希望它插入2个阵列的5个元素 - $pol_text$ukr_text,但不要手动执行,有什么方法可以自动完成吗?
谢谢!

修改:不太确定这是否有帮助,但提交的代码更多,检查是否按下了submit

<?  
if (isset($_POST['submit']))
{
    if (isset($_POST['pol_text'])){$pol_text = $_POST['pol_text'];}
    if (isset($_POST['ukr_text'])){$ukr_text = $_POST['ukr_text'];}
    if (isset($_POST['lecture'])){$lecture = $_POST['lecture'];}

    for($i = 0;$i < 5;$i++)
    {
        $query = mysql_query("INSERT INTO words (lecture, pol, ukr) VALUES ($lecture, $pol_text[$i], $ukr_text[$i])", $db) or die("Data not inserted");
    }

    /* DATA NOT INSERTED BECAUSE CAN'T BE WITH $I INSIDE QUERY?!?!?!?'*/
    unset($_POST['submit']);
}
?>

1 个答案:

答案 0 :(得分:1)

您可以使用foreach循环,并确保转义查询中的值: -

<?  
if (isset($_POST['submit']))
{
    if (isset($_POST['pol_text'])){$pol_text = $_POST['pol_text'];}
    if (isset($_POST['ukr_text'])){$ukr_text = $_POST['ukr_text'];}
    if (isset($_POST['lecture'])){$lecture = $_POST['lecture'];}


    foreach($ukr_text AS $key=>$value)
    {
        $query = mysql_query("INSERT INTO words (lecture, pol, ukr) VALUES ('".mysql_real_escape_string($lecture)."', '".mysql_real_escape_string($pol_text[$key])."', '".mysql_real_escape_string($ukr_text[$key])."')", $db) or die("Data not inserted");
    }

    unset($_POST['submit']);
}
?>

或修改为仅执行多行的单个插入: -

<?  
if (isset($_POST['submit']))
{
    if (isset($_POST['pol_text'])){$pol_text = $_POST['pol_text'];}
    if (isset($_POST['ukr_text'])){$ukr_text = $_POST['ukr_text'];}
    if (isset($_POST['lecture'])){$lecture = $_POST['lecture'];}

    $ins_array = array();

    foreach($ukr_text AS $key=>$value)
    {
        $ins_array[] = "('".mysql_real_escape_string($lecture)."', '".mysql_real_escape_string($pol_text[$key])."', '".mysql_real_escape_string($ukr_text[$key])."')";
    }

    if (count($ins_array > 0))
    {
        $query = mysql_query("INSERT INTO words (lecture, pol, ukr) VALUES ".implode(",", $ins_array), $db) or die("Data not inserted");
    }

    unset($_POST['submit']);
}
?>