你的SQL语法;检查与MySQL服务器版本对应的手册,以便在第1行的“,”附近使用正确的语法

时间:2016-06-10 04:48:07

标签: php mysql

当我调用mysql存储过程参数时,会抛出标题中提到的错误。

<?php
error_reporting(E_ALL);
  ini_set('desplay_errors','1');

//Connect to the database
    $host = "127.0.0.1";
    $user = "root";                     //Your Cloud 9 username
    $pass = "";                         //Remember, there is NO password by default!
    $db = "mydata_db";                  //Your database name you want to connect to

    $connection = mysql_connect($host,$user,$pass)or die(mysql_error());
    mysql_select_db("mydata_db",$connection);

 if(isset($_POST["Login"]))
  {
   $user= mysql_real_escape_string($_post['user']);
   $emailid= mysql_real_escape_string($_post['emailid']);
   $password= mysql_real_escape_string($_post['password']);
   insertinfo($user,$emailid,$password);
   } 
   function insertinfo($user,$emailid,$password)
   {
   //$retval=mysql_query("call sp_login('testing','testing@gmail.com','testing');");    //it is working   

$retval=mysql_query("call sp_login($user,$emailid,$password)"); //it is not working giving error
    if(! $retval ) {
    die('Could not enter data:'. mysql_error());
  }
    echo "Entered data successfully\n";

  }   
?>

<form method="post" action="connect.php" >
<div  style="text-align:center;right:20%; margin-top:2cm;  background-color: yellow; color:red;" >
<h7><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Login</u></b></h7> <br/>
User: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <input type="text" name="user"><br/><br/>
Emailid:&nbsp; <input type="text" name="emailid">&nbsp;<br/><br/>
Password:<input TYPE="text" name="password">&nbsp;&nbsp;<br/><br/>
<input type="submit" name="Login" value="Login">
<input type="submit" name="Home" value="Home">&nbsp;
</div>
</form>    

调用存储过程和传递参数有什么问题?

错误消息是:

  

无法输入数据:SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“,”附近使用正确的语法

2 个答案:

答案 0 :(得分:0)

尝试更改此行

$retval=mysql_query("call sp_login($user,$emailid,$password)");

到这个

$retval=mysql_query("call sp_login('$user','$emailid','$password')");

答案 1 :(得分:0)

PHP中没有变量$_post,它被称为$_POST

将您的行更改为:

$user= mysql_real_escape_string($_POST['user']);
$emailid= mysql_real_escape_string($_POST['emailid']);
$password= mysql_real_escape_string($_POST['password']);

目前,您在查询中使用的所有变量都是空的(因此生成的查询,),逗号后面紧跟着右括号)。

此外,您必须将字符串变量放在引号中,如amaksr所述:

"call sp_login('$user','$emailid','$password')"

当您遇到语法错误时,回显实际生成的查询总是好的。

强制性说明:mysql_*函数已弃用,已从PHP 7中删除,当您升级到该版本时,您的代码将停止工作。您不应该使用它们编写新代码,而是使用mysqli_* or PDO

最后一件事:ini设置称为display_errors,而不是desplay_errors。如果你已经正确设置了这个,你会得到一些通知说变量不在那里。