2015-11-03 68 views
1

嗨,我已經看到另一篇文章相似,但似乎不符合我的問題。PHP Mysqli INSERT錯誤,意外''

我寫一個註冊腳本的網站,並已得到了將數據輸入數據庫的最後一點,但我得到這個錯誤...

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\wamp\www\fastfood\app\register.php on line 46

我看到的是說,有一個意想不到的'',但我不能看到。我需要所有我不喜歡的人?

如果有一個人可以看看這個,讓我知道我在哪裏出了問題,將不勝感激。

我有兩個腳本(以及三個IF你算我的數據庫配置)一個包含了所有我打電話的功能。

<?php 

require_once "config.php"; 
function dbconnect(){ 
    global $dbhost,$dbuser,$dbpass,$connectdb; 
    if (!$connectdb){ 
    echo "failed to connect to database" . mysqli_connect_error(); 
    } 
} 

function dbdisconnect(){ 
    global $connectdb; 
if(mysqli_close($connectdb)){ 
}else{ 
    echo "an error occured while attempting to close the connection to the database"; 
} 
} 
//notworking 
function getCategories(){ 
global $connectdb; 
$query = mysqli_query($connectdb,"SELECT category_name FROM categories"); 
while ($result=mysqli_fetch_array($query)){ 
$options=$result['catergory_name']; 
    echo "$options"; 
    } 
} 

function randStrGen($len){ 
    $result = ""; 
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; 
    $charArray = str_split($chars); 
    for($i = 0; $i < $len; $i++){ 
    $randItem = array_rand($charArray); 
    $result .= "".$charArray[$randItem]; 
    } 
    return $result; 
} 

function mysqlclean($clean){ 
global $connectdb; 
mysqli_real_escape_string($connectdb, $clean); 
return $clean; 
} 

function checkUsername($a){ 
    global $connectdb; 
    $query = $connectdb->query("SELECT username FROM users WHERE username = '$a'"); 
    $result = $query->num_rows; 
    if ($result !=0){ 
    return true; 
    }else{ 
    return false; 
    } 
} 

function verify($a,$b){ 
    if ($a == $b){ 
    return true; 
    }else{ 
    return false; 
    } 
} 

function encrypt($a,$b){ 
    $encrPass = hash('sha256',$b.$a); 
    return $encrPass; 
} 

?> 

和主要註冊腳本:

<html> 
<head></head> 
<body> 
<?php 
    require'assets/functions.php'; 

    $errors = array(); 
    $cleanData =array(); 

    //fetch data from form and add to array 
    if (isset($_POST['submit'])){ 
    $data = array('uName'=>$_POST['uName'], 
        'pass'=>$_POST['pass'], 
        'verPass'=>$_POST['verPass'], 
        'fName'=>$_POST['fName'], 
        'lName'=>$_POST['lName'], 
        'dob'=>$_POST['dob'], 
        'email'=>$_POST['email'], 
        'verEmail'=>$_POST['verEmail'], 
        'address'=>$_POST['address'], 
        'city'=>$_POST['city'], 
        'suburb'=>$_POST['suburb'], 
        'country'=>$_POST['country'], 
       ); 
    } 

    //loop form data and escape 
    foreach ($data as $key => $value) { 
     $cleanData[$key] = mysqlclean($value); 
    } 
    //check if user exists, returns true if not unique 
    if (checkUsername($cleanData['uName'])){ 
     $errors['uName'] = "error"; 
    } 
    //check if password matches 
    if (verify($data['pass'],$data['verPass'])){ 
    }else{$errors['pass'] = "error";} 
    //check if email matches 
    if (verify($data['email'],$data['verEmail'])){ 
    }else{$errors['email'] = "error";} 

    if (empty($errors)){ 
    $emailVerStr = randStrGen(100); 
    $uniqueKey = randStrGen(100); 
    $encrPass = encrypt($cleanData['pass'],$uniqueKey); 
    $query = $connectdb->query("INSERT INTO users(username,fName,lName,dob,emailAddress,address,city,suburb,country,password,emailVerStr,uniqueKey) VALUES('$cleanData['uName']','$cleanData['fName']','$cleanData['lName']','$cleanData['dob']','$cleanData['email']','$cleanData['address']','$cleanData['city']','$cleanData['suburb']','$cleanData['country']','$encrPass','$emailVerStr','$uniqueKey')"); 

    if (!$query){ 
     echo 'an error has occured!' mysqli_error(); 
    } 
    } 



echo '<pre>',print_r($data,true),'</pre>' ; 
echo '<pre>',print_r($errors,true),'</pre>' ; 
echo '<pre>',print_r($cleanData,true),'</pre>' ; 

?> 
    <div id=register> 
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<?php if (array_key_exists('username', $errors)){ 
     echo '<span>Username</span><input type="text" name="uName" value="'. $data['uName'] .'" placeholder="desired username" autofocus required><span>username taken</span></br>'; 
    }else{ 
     echo '<span>Username</span><input type="text" name="uName" value="'. $data['uName'] .'" placeholder="desired username" autofocus required></br>'; 
    } 
     if (array_key_exists('pass', $errors)){ 
     echo '<span>Password</span><input type="password" name="pass" value="" placeholder="enter password"required><span class=error>Passwords did not match</span></br>'; 
     }else{ 
     echo '<span>Password</span><input type="password" name="pass" value="'. $data['uName'] .'" placeholder="enter password"required></br>'; 
     } 
     echo '<input type="password" name="verPass" value="'. $data['verPass'] .'" placeholder="re-enter password"required></br> 
     <span>First Name</span><input type="text" name="fName" value="'. $data['fName'] .'" required></br> 
     <span>Last Name</span><input type="text" name="lName" value="'. $data['lName'] .'" required></br> 
     <span>D.O.B</span><input type="date" name="dob" required></br>'; 
     if(array_key_exists('email', $errors)){ 
     echo '<span>Email</span><input type="email" name="email" value="'. $data['email'] .'" required><span class=error>Email did not match</span></br>'; 
     }else{ 
     echo '<span>Email</span><input type="email" name="email" value="'. $data['email'] .'" required></br>'; 
     } 
     echo '<input type="email" name="verEmail" value="'. $data['email'] .'" required></br> 
     <span>Address</span><input type="text" name="address" value="'. $data['address'] .'" required></br> 
     <span>City</span><input type="text" name="city" value="'. $data['city'] .'" required></br> 
     <span>Suburb</span><input type="text" name="suburb" value="'. $data['suburb'] .'" required></br> 
     <span>Country</span><input type="text" name="country" value="New Zealand" readonly></br> 
     <input type="submit" name="submit" value="Register"> 
    </form>'; 

    ?> 
    </div> 

</body> 
</html> 

只是爲了節省您在這裏有一段時間是給我的悲傷

if (empty($errors)){ 
    $emailVerStr = randStrGen(100); 
    $uniqueKey = randStrGen(100); 
    $encrPass = encrypt($cleanData['pass'],$uniqueKey); 
    $query = $connectdb->query("INSERT INTO users(username,fName,lName,dob,emailAddress,address,city,suburb,country,password,emailVerStr,uniqueKey) VALUES('$cleanData['uName']','$cleanData['fName']','$cleanData['lName']','$cleanData['dob']','$cleanData['email']','$cleanData['address']','$cleanData['city']','$cleanData['suburb']','$cleanData['country']','$encrPass','$emailVerStr','$uniqueKey')"); 
    if (!$query){ 
     echo 'an error has occured!' mysqli_error(); 
    } 
    } 

我感謝所有幫助的SQL查詢。

+0

請包括整個錯誤,它通常會告訴你什麼行,發生在什麼文件中的錯誤。 – Epodax

+0

讓你這樣的查詢$查詢= $ connectdb->查詢(「INSERT INTO的用戶(用戶名,FNAME,LNAME,出生日期,EMAILADDRESS,地址,城市,郊區,鄉村,密碼,emailVerStr,唯一鍵) VALUES( '{$ cleanData [' UNAME ']}', '{$ cleanData [' FNAME ']}', '{$ cleanData [' L-NAME ']}', '{$ cleanData [' DOB ']}', '{$ cleanData [' 電子郵件」 ]} ' '{$ cleanData [' 地址 ']}', '{$ cleanData [' 城市 ']}','{$ CL eanData [ '郊區']}」, '{$ cleanData [' 國家 ']}', '$ encrPass', '$ emailVerStr', '$唯一鍵')「); – ManiMuthuPandi

+0

喜對不起這裏是完整的錯誤.. 解析錯誤:語法錯誤,意想不到 ''(T_ENCAPSED_AND_WHITESPACE),期望標識符(T_STRING)或可變(T_VARIABLE)或數字(T_NUM_STRING)在C:\瓦帕\ WWW \快餐\應用\ register.php在線46. 它是在$查詢行manimuthu拿起我會給他的建議一試。 謝謝 – Codecowboy

回答

0
if (empty($errors)) 
{ 
    $emailVerStr = randStrGen(100); 
    $uniqueKey = randStrGen(100); 
    $encrPass = encrypt($cleanData['pass'], $uniqueKey); 
    $query = $connectdb->query("INSERT INTO users(username,fName,lName,dob,emailAddress,address,city,suburb,country,password,emailVerStr,uniqueKey) VALUES('{$cleanData['uName']}','{$cleanData['fName']}','{$cleanData['lName']}','{$cleanData['dob']}','{$cleanData['email']}','{$cleanData['address']}','{$cleanData['city']}','{$cleanData['suburb']}','{$cleanData['country']}','{$encrPass}','{$emailVerStr}','{$uniqueKey}')"); 
    if (!$query) 
    { 
     echo 'an error has occured!' . mysqli_error(); 
    } 
} 
2
在查詢

有魔術引號的問題 查詢更改爲

$connectdb->query("INSERT INTO users (username, fName, lName, dob, emailAddress, address, city, suburb, country, password, emailVerStr, uniqueKey) 
           VALUES('".$cleanData['uName']."', '".$cleanData['fName']."', '".$cleanData['lName']."', '".$cleanData['dob']."', '".$cleanData['email']."', '".$cleanData['address']."', '".$cleanData['city']."', '".$cleanData['suburb']."', '".$cleanData['country']."', '$encrPass', '$emailVerStr', '$uniqueKey')"); 
+0

哦,是什麼「魔術引號」就是字面上的屁股有些疼痛報價奇蹟般地出現在代碼? – Codecowboy

+0

你可以在這裏找到細節:http://aaroncameron.net/article.html?aID=59 和http://www.homeandlearn.co.uk/php/php13p4.html – kevin