当我调用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> <u>Login</u></b></h7> <br/>
User: <input type="text" name="user"><br/><br/>
Emailid: <input type="text" name="emailid"> <br/><br/>
Password:<input TYPE="text" name="password"> <br/><br/>
<input type="submit" name="Login" value="Login">
<input type="submit" name="Home" value="Home">
</div>
</form>
调用存储过程和传递参数有什么问题?
错误消息是:
无法输入数据:SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“,”附近使用正确的语法
答案 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
。如果你已经正确设置了这个,你会得到一些通知说变量不在那里。