0

这是我用来调用查询以更新数据库中的值的函数:

function updatabout($detailsarr)
    {

        $query = "UPDATE User_details SET Marital_status='" . 
                 $detailsarr['m_status'] . "', Ethnicity='" . 
                 $detailsarr['ethinicity'] . "', Primary_language='" .            
                 $detailsarr['language'] . "', Education_level='" .
                 $detailsarr['education'] . 
                 "' WHERE User_id=".$_SESSION['uid'];
        $queryresult = mysql_query($query);
        echo mysql_error().'<br />'.$query;

}

这里所有数据都保存到我的数据库中,除了“爱好”字段并且爱好字段的值在我的数据库中显示为“未定义”,以及单击保存按钮后,我收到警报并查询什么我在这里使用过,但只有在刷新页面后才会在页面上显示这些值...谁能告诉我我在此代码中的错误...提前谢谢..

4

2 回答 2

1

更新好的,现在我看到您已经编辑并更正了相关代码中的错误。但对我来说仍然<?php =$hobby ?>没有意义。它告诉 PHP 解析器什么都不做。echo如我的回答中所述,在此处使用。

您的问题的唯一可能解释是用于生成hobby输入字段的代码,特别是这个片段value=&lt;?=$hobby?&gt;有问题。

原因:
PHP 处理 a&lt;?<?不同。前者按原样回显,后者告诉 PHP PHP 代码此时已启动,并对其进行处理。然后是一个 unneccesarry=和 missing ;

解决方案:
首先value="<?php echo $hobby; ?>"使用完整的PHP标签()总是推荐使用短标签()然后你需要告诉PHP$hobby通过使用来回显/打印here的值echo。现在输出 HTML 应该是value="_Some_Hobby_"

现在,如果输出的 HTML 仍然是value=""空的,那么您需要检查是否$hobby实际包含一个值。

如案例 3中的http://codepad.org/dvf9bwSd所示,

 value="&lt;?php echo $hobby; ?&gt;"

PHP Parser 只是&lt;php .... ?&gt;按原样分块。所以使用文字<& >

现在,在案例 1 中,

value="<?php echo $hobby; ?>"
<?php
var_dump($hobby);
?>

回显$hobby变量而不为其分配任何值不会打印任何内容。并且var_dump还返回NULL

继续案例 2,

<?php
$hobby = "Coding";
?>
value="<?php echo $hobby; ?>"
<? var_dump($hobby); ?>

定义/分配一个值$hobby然后回显它会给我们想要的结果value="Coding",并且var_dump还说它Stringlength=6

于 2012-07-26T05:56:22.700 回答
0

也许您的代码没有按预期执行的原因是因为您没有转义在服务器端脚本上传递的数据。

尝试使用escapejavascript 函数。

试试这个:

"m_status=" + escape(barr[0]) + "&ethinicity=" + escape(barr[1]) + "&language=" + escape(barr[2]) +" &education=" +escape( barr[3]) + "&hobby=" + escape(barr[4])

您可能还想使用 firebug(firefox) 或 console(chrome) 工具,以便能够知道在服务器端脚本上传递的值。

于 2012-07-26T05:52:55.640 回答