JS变量到PHP到Mysql查询

时间:2013-11-01 06:00:49

标签: javascript php json encode

我试图使用ajax post

将JS变量发送到我的PHP
 function post(){

       $.ajax({url:"myPHP.php", 
              data: {name: "John"},
              type: 'post',
              success: function(data){
              return true;    
              },
         });
    }

它发送到我的PHP,但是让我说我​​试图提醒变量以确保,我什么也得不到,但它只在我编码变量时才有效。

PHP

session_start();

$EID   = isset($_POST["name"])?$_POST["name"]:""; 

$EID = json_encode($EID);   
$_SESSION['EID'] =$EID;
echo "alert($EID);";

现在在另一个PHP文件中,我想用该变量做一些事情,但它不起作用。它就像变量没有设置一样。

session_start();

 $EID = $_SESSION['EID'];


    // Connect to MySQL
         if ( !( $database = mysql_connect( "localhost",
            "root", "" ) ) )                      
            die( "Could not connect to database </body></html>" );

    // open Events database
         if ( !mysql_select_db( "db", $database ) )
            die( "Could not open db database </body></html>" );

     $result = mysql_query ("SELECT * FROM database WHERE ID = '$EID' ")
     or die ('Error updating database because: '.mysql_error());

查询没有通过,因为没有定义$ EID或类似的东西。有没有办法将Json_encode变量作为PHP变量?感谢

3 个答案:

答案 0 :(得分:0)

您正在使用$_POST检索.ajax()请求发送的信息,但正如之前链接的文档中所示。默认方法是GET,而不是POST ..使用{{1您的设置中的参数使用POST(type)。

关于你的ajax没有返回结果..你对成功函数中的数据变量什么都不做;你要做的就是type: 'post'。如果您想查看数据完成的内容,请使用它。

我还想在你的ajax中说明你的数据对象中没有包含对象属性 id 的项目,这也会说明它没有在你的php中设置;换句话说..在你的php中,你通过使用POST退出ajax请求的值..并且你检索值'eid'..但是没有'eid',只有'name'。将'eid'替换为名称,或在请求对象(return true)中正确定义'eid',它将起作用。

以上是上述例子,

data: {name: 'john', eid: 'id'}

答案 1 :(得分:0)

尝试这样的事情

=== 你的Js ==

function post(){

   $.ajax({
          type: "POST",
           url:"myPHP.php", 
          data: {name: "John"},

          success: function(data){
            alert(data);    
          }
     });
}

柱();

==== 您的myPHP.php ====

 <?php

   error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE);// you may want to catch session errors on some server
session_start();
//connect to database
$server = "localhost";
$username = "root";
$password = "secret";
$database = "mydbName";

$connId = mysql_connect($server,$username,$password) or die("Cannot connect to server");
$selectDb = mysql_select_db($database,$connId) or die("Cannot connect to database");

if(isset($_REQUEST['name'])){
$_SESSION['EID']=$_REQUEST['name'];
$EID=$_SESSION['EID'];
if(mysql_query("SELECT * FROM database WHERE ID = '$EID' "))
{
echo "Success!";
}
else
{
echo "Error!";
}
}//Closed isset here

    ?>

答案 2 :(得分:0)

目前尚不清楚为什么要设置会话变量,除非您打算将第二个PHP脚本用于另一个单独的AJAX调用。将变量传递给第一个包含或要求的第二个PHP脚本时,不需要会话变量。

请注意,在同一PHP代码中调用session_start()两次将引发错误。如果您的第一个PHP代码包含第二个,则会抛出~E_NOTICE。另一方面,如果您的第一段代码使用PHP CLI来执行第二段代码,则第二段脚本将不会共享会话数据。