【问题标题】:PHP wont send data to mysql!? (undefined variable error)PHP不会向mysql发送数据!? (未定义的变量错误)
【发布时间】:2013-02-25 23:26:10
【问题描述】:

我有一些从 adobe flash AS3 接收的数据,PHP 文件接收到它,但我似乎无法将数据发送到 mySQL...

这是我的 PHP 代码:

<?php

if(isset($_POST['userFirstName'])){ $userFirstName = $_POST['userFirstName']; }
if(isset($_POST['userLastName'])){ $userLastName = $_POST['userLastName']; }
if(isset($_POST['userEmail'])){ $userEmail = $_POST['userEmail']; }
if(isset($_POST['userNumber'])){ $userNumber = $_POST['userNumber']; }
if(isset($_POST['userMsg'])){ $userMsg = $_POST['userMsg']; }

$username="******";
$password="*******";
$database="b-elite-fitness";

mysql_connect("localhost","$username","$password") or die (mysql_error());
mysql_select_db("$database") or die (mysql_error());

mysql_query("INSERT INTO formdp 
(ID ,firstname, lastname, email, number, message) 
VALUES('','$userFirstName[firstname]','$userLastName[lastname]','$userEmail[email]','$userNumber[number]','$userMsg[message]')")
or die (mysql_error());
echo "foo=bar&checking=ok";
mysql_close();
?>

我得到这个 php 文件的错误...

( ! ) Notice: Undefined variable: userFirstName in C:\wamp\www\NewtestForm\form.php on line 18 Call Stack
#   Time    Memory  Function    Location 1  
0.0094  253176  {main}( )   ..\form.php:0

( ! ) Notice: Undefined variable: userLastName in C:\wamp\www\NewtestForm\form.php on line 18 Call Stack
#   Time    Memory  Function    Location 1  
0.0094  253176  {main}( )   ..\form.php:0

( ! ) Notice: Undefined variable: userEmail in C:\wamp\www\NewtestForm\form.php on line 18 Call Stack
#   Time    Memory  Function    Location 1  
0.0094  253176  {main}( )   ..\form.php:0

( ! ) Notice: Undefined variable: userNumber in C:\wamp\www\NewtestForm\form.php on line 18 Call Stack
#   Time    Memory  Function    Location 1  
0.0094  253176  {main}( )   ..\form.php:0

( ! ) Notice: Undefined variable: userMsg in C:\wamp\www\NewtestForm\form.php on line 18 Call Stack
#   Time    Memory  Function    Location 1  
0.0094  253176  {main}( )   ..\form.php:0

谁能帮帮我这几天我一直在解决这个问题...

我是 PHP 新手,所以也可以解释一下......

编辑更新....我更改了编码,但仍然出现相同的错误...这是我的新编码....

<?php

if(isset($_POST['userFirstName'])){ $userFirstName = $_POST['userFirstName']; }
if(isset($_POST['userLastName'])){ $userLastName = $_POST['userLastName']; }
if(isset($_POST['userEmail'])){ $userEmail = $_POST['userEmail']; }
if(isset($_POST['userNumber'])){ $userNumber = $_POST['userNumber']; }
if(isset($_POST['userMsg'])){ $userMsg = $_POST['userMsg']; }

$username="root";
$password="dp10aap";
$database="b-elite-fitness";

mysql_connect("localhost","$username","$password") or die (mysql_error());
mysql_select_db("$database") or die (mysql_error());

mysql_query("INSERT INTO formdp 
    (id ,firstname, lastname, email, number, message) 
    VALUES('NULL','$userFirstName','$userLastName','$userEmail','$userNumber','$userMsg')") 
or die (mysql_error());
mysql_close();
?>

这是我的错误......

( ! ) 注意:未定义变量:第 18 行 C:\wamp\www\NewtestForm\form.php 中的 userFirstName 调用栈

时间记忆功能定位

1 0.0112 252456 {main}( ) ..\form.php:0

( ! ) 注意:未定义变量:第 18 行 C:\wamp\www\NewtestForm\form.php 中的 userLastName 调用栈

时间记忆功能定位

1 0.0112 252456 {main}( ) ..\form.php:0

( ! ) 注意:未定义变量:第 18 行 C:\wamp\www\NewtestForm\form.php 中的 userEmail 调用栈

时间记忆功能定位

1 0.0112 252456 {main}( ) ..\form.php:0

( ! ) 注意:未定义变量:第 18 行 C:\wamp\www\NewtestForm\form.php 中的 userNumber 调用栈

时间记忆功能定位

1 0.0112 252456 {main}( ) ..\form.php:0

( ! ) 注意:未定义变量:第 18 行 C:\wamp\www\NewtestForm\form.php 中的 userMsg 调用栈

时间记忆功能定位

1 0.0112 252456 {main}( ) ..\form.php:0

【问题讨论】:

  • 如果这些变量未定义,您最初的isset 调用将返回false,因此实际上您的PHP 没有收到您正在发布的数据。问题出在其他地方。
  • fyi mysql 已弃用,此代码易受 SQL 注入攻击。您应该使用带有mysqli 或 PDO 的占位符
  • 在您的 ID 字段中使用 NULL 而不是 ''。假设您已将 ID 字段设置为自动递增整数?
  • @Beneto 谢谢你的帮助
  • @fuzic 你能帮我确定问题可能出在哪里吗......如果我也向你展示我的 AS3 编码......因为我最初认为错误是在 AS3 和 PHP 之间而不是 PHP到 MYSQL...?

标签: php mysql actionscript-3


【解决方案1】:

这是不正确的:$userFirstName[firstname]

我假设$_POST['userFirstName'] 是一个字符串,在这种情况下,您将只使用$userFirstName 来访问该变量。如果它是一个数组,则缺少用于访问数组索引的引号:$userFirstName['firstname']。

其他变量也是如此。

【讨论】:

  • 我现在收到以下错误.... 解析错误:语法错误,意外 '' (T_ENCAPSED_AND_WHITESPACE),期望标识符 (T_STRING) 或变量 (T_VARIABLE) 或数字 (T_NUM_STRING
【解决方案2】:

您通过添加['identifier'] 来创建自己的变量关联数组。这使它们与最初的不同,然后您尝试使用它们,就好像您在其中添加了一些价值一样,这就是您得到错误的原因。只需按原样使用它们。像这样

mysql_query("INSERT INTO formdp (ID ,firstname, lastname, email, number, message) 
VALUES('','$userFirstName','$userLastName','$userEmail','$userNumber','$userMsg')")
or die (mysql_error());

请记住清理用户的输入,并注意PHP 的mysql 扩展名已被弃用。考虑mysqli 或PDO。

【讨论】:

  • 我按照你的建议更改了它,我得到了 Parse 错误的最终错误:语法错误,文件意外结束... 在最后一行
  • 我仍然得到同样的错误......检查我的编码后我错过了“我添加它并得到与之前相同的错误,即使在按照你的建议更改编码之后...... @chibuzo
  • @user2080616 编辑您的问题并为您的表单添加代码,让我们从那里开始。
  • 你去吧我已经按照你的建议改变了编码,但是我得到了同样的错误......有什么想法吗?
  • 您的 $_POST 变量很可能未设置。
【解决方案3】:

您的 php 代码没有收到您的 POST 数据。您是否对 $_POST 进行了 vardump 以查看它到底持有什么?

【讨论】:

    猜你喜欢
    • 2011-10-27
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 2019-08-10
    相关资源
    最近更新 更多