0

这是我的代码:

<?php 
$dbhost = 'localhost'; 
$dbuser = 'root'; 
$dbpass = ''; 
$conn = mysql_connect($dbhost, $dbuser, $dbpass); 
if(! $conn ) 
{ 
die('Could not connect: ' . mysql_error()); 
} 
$sql = "INSERT INTO together (`First Name`,`Last Name`, `Email id`,'Password') 
VALUES ( '$_POST[First name]', '$_POST[Last name]', '$_POST[Email_id]','$_POST[Password]')"; 

mysql_select_db('test'); 
$retval = mysql_query( $sql, $conn ); 
if(! $retval ) 
{ 
die('Could not enter data: ' . mysql_error()); 
} 
echo "You have successfully singed up for together \n"; 
mysql_close($conn); 
?> 

但是当我运行它时,我收到以下错误:

( Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting ']' in C:\wamp\www\MyProjects\Sign_up.php on line 11) 

请帮我修复它。

4

5 回答 5

1

'Password'在 INSERT 查询中更改为“密码”。此外,$_POST[First name]将不起作用 - 您需要致电:($_POST['First name']带引号)

此外,不建议使用mysql_*函数 - 它已过时(见红色框)且不安全。请改用 PDO 或 MySQLi。

这是一个使用 PDO 的示例:

$dbh = new PDO("mysql:host=$hostname;dbname=test", $username, $password);
$stmt = $dbh->prepare("INSERT INTO together (`First Name`,`Last Name`, `Email id`,'Password') 
      VALUES (:fname, :lname, :email_id, :pwd)") ;

    /*** bind the paramaters ***/
    $stmt->bindParam(':fname', $fname, PDO::PARAM_STR);
    $stmt->bindParam(':lname', $lname, PDO::PARAM_STR);
    $stmt->bindParam(':email_id', $email_id, PDO::PARAM_INT);
    $stmt->bindParam(':pwd', $pwd, PDO::PARAM_STR);

    /*** execute the prepared statement ***/
    $stmt->execute();

    /*** fetch the results ***/
    $result = $stmt->fetchAll();

    /*** loop of the results ***/
    foreach($result as $row)
        {
        echo $row['`First Name`'].'<br />';
...
于 2013-09-21T16:53:11.827 回答
1

您不是只是忘记了之间的引号[]吗?在 :( '$_POST[First name]', '$_POST[Last name]', '$_POST[Email_id]','$_POST[Password]')

于 2013-09-22T01:10:05.453 回答
1

伙计,您需要在数组中执行此操作:

$_POST["Email_id"]

此外,查询 sql 中的字段不需要 '`'。就像您真的创建了名称中带有空格的字段一样

于 2013-09-21T16:54:52.160 回答
0

正如您在此处输入的那样,变量替换不适用于数组值。如果您不想使用连接,则需要用 包装每个数组值{ },如下所示:

$sql = "INSERT INTO together (`First Name`,`Last Name`, `Email id`,'Password') 
VALUES ( '{$_POST[First name]}', '{$_POST[Last name]}', '{$_POST[Email_id]}','{$_POST[Password]}')";

http://php.net/manual/en/language.types.string.php

但是,您的代码存在多个问题。对于初学者,这些mysql_*函数已被弃用,因此您不应在新代码中使用它们。已经有替代方案,即 MySQLi 和 PDO 库。你也不应该查询中使用原始表单输入;谷歌“SQL 注入”以了解原因。PHP 有一个过滤器库,可用于清理输入:http ://www.php.net/manual/en/filter.filters.sanitize.php

于 2013-09-21T17:03:41.533 回答
0

它应该是:

$sql = "INSERT INTO together (`First Name`,`Last Name`, `Email id`,`Password`) 
VALUES ( '$_POST[First name]', '{$_POST['Last name']}', '$_POST[Email_id]','$_POST[Password]')";

由于数组键包含一个空格,因此不能使用简单的插值,您需要将其放在引号中,这意味着您必须{...}在变量周围使用。

或者如果输入字段的实际名称是,name="Last_name"那么您需要包含下划线:

$sql = "INSERT INTO together (`First Name`,`Last Name`, `Email id`,`Password`) 
VALUES ( '$_POST[First name]', '$_POST['Last_name']', '$_POST[Email_id]','$_POST[Password]')"; 
于 2013-09-21T17:03:48.083 回答