一个PHP表单保存到MySQL,另一个不保存';t、 不知道为什么

一个PHP表单保存到MySQL,另一个不保存';t、 不知道为什么,php,mysql,Php,Mysql,我们有一个PHP网站,有多个表单保存到数据库中。我们有两个页面,都保存了相似的信息。正确保存所有这些信息。第二个,我正在尝试更正,未能保存其中一个字段,area_info 它是否应该像我编辑.php文件并从有效的文件复制UPDATE语句并将其放入无效的文件一样简单 检查非工作页面上的元素时,未保存字段的文本框显示为: <input type="text" value="" name="area_info[10]"> 不适用于字段,但在不同的PHP文件中 for($x = 1; $x

我们有一个PHP网站,有多个表单保存到数据库中。我们有两个页面,都保存了相似的信息。正确保存所有这些信息。第二个,我正在尝试更正,未能保存其中一个字段,area_info

它是否应该像我编辑.php文件并从有效的文件复制UPDATE语句并将其放入无效的文件一样简单

检查非工作页面上的元素时,未保存字段的文本框显示为:

<input type="text" value="" name="area_info[10]">
不适用于字段,但在不同的PHP文件中

for($x = 1; $x <= 100; $x++) {
    if(trim($area_name[$x]) <> $null) {
if($area_id[$x] <> $null) {
    $sql = "UPDATE tracking.areas 
                        SET area_name    = '{$area_name[$x]}', 
                            area_info    = '{$area_info[$x]}',
                            area_sort    = '{$area_sort[$x]}', 
                            contest_id           = '{$contest_id}',
                            tracking_id      = '{$tracking_id}'
                        WHERE area_id    = '{$area_id[$x]}' ";
} 
else {
    $sql = "INSERT INTO tracking.areas 
                            (area_name, 
                            area_info,
                            area_sort, 
                            contest_id,
                            tracking_id) 
                        VALUES 
                            ('{$area_name[$x]}', 
                            '{$area_info[$x]}',
                            '{$area_sort[$x]}', 
                            '{$contest_id}',
                            '{$tracking_id}') ";

}

对于($x=1;$x
从技术上讲,您应该使用单引号
而不是双引号
来包装字符串。双引号可能根据您的MySQL配置工作,但单引号更好

因此,您需要的更新:

$ar_info_update_sql = "
        UPDATE  tracking.areas
        SET area_info = '{$ar_info}'
        WHERE   area_id = '{$ar_id'}'";
还请注意,我将变量包装在花括号中,在我看来,这是更好的做法,它还允许将非平凡变量插入字符串中,例如

$a = "This is a {$array['some_index']}";
$b = "And that is a {$someObj->someProperty}";
$c = "And then we have {$someObj->someFUnction()}";

另一方面,mysql_*函数已被弃用,不建议使用。请看一看PDO或mysqli_*取而代之……变量
$null
包含哪些内容?如何声明以及在何处声明?它们与已失效的mysql_*函数有足够的不同,从而使整个问题无效。您需要进行一些重写。是否es
$area\u name[$x]
有值吗?
或死($get\u area\u id\u sql)
?如果失败,似乎是一个无休止的循环。@EntiendNull Ok。但是,通常最好检查是否存在实际错误(如果存在)。小心地建议使用PHP短标记。PHP5.5之前的版本通常必须在PHP.ini文件中手动打开此选项。这通常不是默认设置……我如何判断正在运行的PHP版本?Tha这可能会有帮助,但我不知道如何找到它来告诉你们。谢谢,我会更新短标签。这只是我的习惯。你可以用/**/tags来注释它,两者之间唯一的区别是:
$ar\u info=$area\u info[$ar\u id];
我没有看到你从哪里得到
$area\u info[]
因此我将数组从请求变量
$\u POST['area\u info'][]
。你只需要确保你发送了这个
$contest\u id
,它就可以工作了。@DanceSC谢谢,很抱歉我回答错了人!谢谢!你知道,我确实注意到了两者之间的花括号差异,但我真的不知道它们的影响有多大。我会试一试。谢谢s、 但当我使用这段代码时,页面甚至不会加载任何内容。不知道为什么。@Populus
<?php
// Specify what $contest_id is! 
$sq = "SELECT area_id FROM areas WHERE contest_id ='".$contest_id."'";
$qu = mysql_query($sq) or die(mysql_error()); 

while ($fe = mysql_fetch_assoc($qu)) {
    if (isset($_POST['area_info'][$fe['area_id']])) {
        $sql = "UPDATE tracking.areas SET area_info ='".$_POST['area_info'][$fe['area_id']]."' WHERE area_id ='".$fe['area_id']."'";
        mysql_query($sql) or die(mysql_error());
    }
}
?>
$ar_info_update_sql = "
        UPDATE  tracking.areas
        SET area_info = '{$ar_info}'
        WHERE   area_id = '{$ar_id'}'";
$a = "This is a {$array['some_index']}";
$b = "And that is a {$someObj->someProperty}";
$c = "And then we have {$someObj->someFUnction()}";