2016-06-10 313 views
-1

當我調用一個mysql存儲過程參數時,會拋出標題中提到的錯誤。您的SQL語法;檢查與您的MySQL服務器版本相對應的手冊,在第1行',)'處使用正確的語法

<?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','[email protected]','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

我會建議尋找[PDO](http://php.net/manual/fr/book.pdo.php)或[MySqli](http://php.net/manual/fr/book。 mysqli.php)而不是棄用的mysql_query。而不是試圖調試這... –

+1

我看到的唯一...是*可能*你正在測試你的腳本沒有密碼...測試快捷方式通常會導致怪異的錯誤;)。如果'$ password'爲空,這可能會導致查詢中出現',)'。 –

回答

0

試圖改變這一行

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

這個

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

現在工作正常....謝謝 – bhasheer

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。如果你正確地設置了這個,你會得到一些通知,說變量不在那裏。

相關問題