Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL“;在“;标记错误_Php_Sql_Database - Fatal编程技术网

Php MySQL“;在“;标记错误

Php MySQL“;在“;标记错误,php,sql,database,Php,Sql,Database,这是我的代码: <?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`, `E

这是我的代码:

<?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); 
?> 

请帮我修一下

在INSERT查询中将
'Password'
更改为'Password'。另外,
$\u POST[First name]
将不起作用-您需要调用:
$\u 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 />';
...
$dbh=newpdo(“mysql:host=$hostname;dbname=test”,$username,$password);
$stmt=$dbh->prepare(“一起插入(`First Name`、`Last Name`、`Email id`、`Password'))
值(:fname,:lname,:email_id,:pwd)”;
/***约束参数***/
$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);
/***执行准备好的语句***/
$stmt->execute();
/***取得结果***/
$result=$stmt->fetchAll();
/***结果循环***/
foreach($结果为$行)
{
echo$row[''First Name`].
; ...
在插入查询中将
'Password'
更改为'Password'。另外,
$\u POST[First name]
将不起作用-您需要调用:
$\u 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 />';
...
$dbh=newpdo(“mysql:host=$hostname;dbname=test”,$username,$password);
$stmt=$dbh->prepare(“一起插入(`First Name`、`Last Name`、`Email id`、`Password'))
值(:fname,:lname,:email_id,:pwd)”;
/***约束参数***/
$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);
/***执行准备好的语句***/
$stmt->execute();
/***取得结果***/
$result=$stmt->fetchAll();
/***结果循环***/
foreach($结果为$行)
{
echo$row[''First Name`].
; ...
伙计,你需要在阵列中执行以下操作:

$_POST["Email_id"]

此外,字段在查询sql中不需要“`”。如果您确实在名称中创建了带空格的字段,则需要在数组中执行以下操作:

$_POST["Email_id"]

此外,字段在查询sql中不需要“`”。正如您在此处输入的那样,如果您真的创建了名称中带有空格的字段,那么变量替换不适用于数组值。如果您不想使用串联,则需要使用
{}
来包装每个数组值,如下所示:

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


但是,您的代码存在多个问题。对于初学者来说,
mysql\u*
函数已经被弃用,因此您不应该在新代码中使用它们。已经有了替代方法,即MySQLi和PDO库。您还应该永远不要在查询中使用原始表单输入;Google“SQL注入”要了解.PHP为什么有一个过滤器库,您可以使用它来清理输入:

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

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

但是,您的代码存在多个问题。对于初学者来说,
mysql\u*
函数已经被弃用,因此您不应该在新代码中使用它们。已经有了替代方法,即MySQLi和PDO库。您还应该永远不要在查询中使用原始表单输入;Google“SQL注入”要了解.PHP为什么有一个可用于清理输入的过滤器库:

它应该是:

$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\u name”
,则需要包含下划线:

$sql = "INSERT INTO together (`First Name`,`Last Name`, `Email id`,`Password`) 
VALUES ( '$_POST[First name]', '$_POST['Last_name']', '$_POST[Email_id]','$_POST[Password]')"; 
应该是:

$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\u name”
,则需要包含下划线:

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

你是不是忘了在
[]
之间加引号了?在:
(“$\u POST[名字]”、“$\u POST[姓氏]”、“$\u POST[电子邮件id]、“$\u POST[密码]”)

你不是忘了在
[]
之间加引号了吗?在:
(“$\u POST[名字]、“$\u POST[姓氏]、“$\u POST[电子邮件id]、“$\u POST[电子邮件id]、”、“$\u POST[密码])

用户提取($\u POST);并简单地调用如下变量:$sql=“一起插入(
名字
姓氏
电子邮件id
,'Password')值(“$First\u Name”,“$Last\u Name”,“$Email\u id”,“$Password”);用户提取($\u POST);并简单地调用如下变量:$sql=“一起插入”(
First Name
Last Name
Email id
,“Password”)值(“$First\u Name”,“$Last\u Name”,“$Email\u id”,“$Password”);