【问题标题】:Using variables, as an array element number, inside of an mysql_query在 mysql_query 内部使用变量作为数组元素编号
【发布时间】:2014-07-07 15:18:58
【问题描述】:

如果问题有点令人困惑,我很抱歉,请尽量使其清楚。
基本上,我有这个代码:

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']);
}
?>

【问题讨论】:

  • 你能发布一些示例数据吗?
  • @mattes 好吧,我有 5 个文本字段,每个字段分别有 name=pol_text[]name=pol_text[]。我正在提交一个表单,并思考如何实现自动化。我想我可以手动编写 5 次,但为了将来参考,如果我有 5 个以上的字段怎么办,我想知道自动化的可能方法,谢谢!
  • 除非数据库列是数字,否则语句的“VALUES”部分中的 php 变量需要用单引号 (') 括起来,以将插入的值转换为“文字值”。您可能需要在“大括号”({}) 中包含变量名称,以确保准确的值替换。即'{$pol_text[$i]}'。
  • @RyanVincent 成功了!非常感谢!
  • 不客气 - 很高兴它有帮助。 :-)

标签: mysql arrays variables numbers element


【解决方案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']);
}
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多