JS变量到PHP到Mysql查询


JS variable to PHP to Mysql query

>我正在尝试使用 ajax 帖子将 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 变量获取?谢谢

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

至于你的ajax不返回结果......你对成功函数中的数据变量什么都不做;你所做的只是return true。 如果您想查看对数据完成的操作,请使用它。

我还想在你的阿贾克斯中说明这一点。您的数据对象中没有包含对象属性 id 的项目,这也解释了它未在 php 中设置;换一种说法..在你的php中,你通过使用POST来停用ajax请求的值。然后检索值"eid"。但没有"开斋节",只有"名字"。 将"eid"替换为名称,或在请求对象(data: {name: 'john', eid: 'id'})中正确定义"eid",它将起作用。

这是上述示例,

$.ajax({
    url: 'myPHP.php',
    type: 'post',
    data: {
        name: "John",
        eid: 1 //or whatever eid should be/put your variable here
    },
    success: function(data){
        return true;    
    },
 }); 

试试这样的事情

===你的js==

函数 post(){

   $.ajax({
          type: "POST",
           url:"myPHP.php", 
          data: {name: "John"},
          success: function(data){
            alert(data);    
          }
     });
}

帖子();

====你的我的PHP.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
    ?>

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

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