PHP в вставке данных в таблицу - PullRequest
1 голос
/ 01 марта 2012

Я запустил php всего за 2-3 дня, как мне вставить переменную в БД и по какой причине я получил эту ошибку?

я думаю, что не недооценивал строки и не вставлял в БД полностью

если вы можете предложить мне несколько книг, это очень хорошо

Спасибо за вашу помощь

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\babak\register.php on line 21

При запуске этого скрипта

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>register
    </title>
</head>

<body>
<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('babak');
?>

thanx for your registering &nbsp;<?php echo $_POST["name"]; ?><br/>
your email is <?php echo $_POST["E-MAIL"]; ?><br/>
<?php
    $sql ="INSERT INTO users(id,pass) VALUES ($_POST['id']','$_POST['pass']')";
?>
</body>
</html>

Ответы [ 3 ]

0 голосов
/ 01 марта 2012
$sql="INSERT INTO users(id,pass) VALUES ($_POST['id']','$_POST['pass']')";
                                                ^  ^           ^    ^

указанные кавычки недопустимы, когда вы непосредственно вставляете значения массива в строку в двойных кавычках.Используйте любой из

$sql = "INSERT .... '$_POST[id]', '$_POST[pass]'";
$sql = "INSERT ... '{$_POST['id']}', '{$_POST['pass']}'";
0 голосов
/ 01 марта 2012

Ваш запрос (и строка на самом деле) недействителен.Кроме того, никогда НИКОГДА не используйте пользовательский ввод напрямую, поскольку злонамеренный пользователь может просто взломать ваш скрипт и взломать базу данных.

$sql = "INSERT INTO users(id,pass) VALUES ('$id','$pass')";

Где $id и $pass - экранированные версии $_POST['id'] и $_POST['pass'] соответственно.

Предлагаю вам прочитать несколько хороших книг о безопасности PHP.

0 голосов
/ 01 марта 2012

Когда вы встраиваете массивы в строку двойных кавычек, вы должны использовать {$foo['bar']} или $foo[bar] без одинарных кавычек:

$sql="INSERT INTO users(id,pass) VALUES ('{$_POST['id']}', '{$_POST['pass']}')";

Но, как уже упоминалось в моем комментарии к вашему вопросу, вам нужно позаботиться о внедрении SQL и избежать ненадежного ввода:

$sql = "INSERT INTO users(id,pass) VALUES (
    '".mysql_real_escape_string($_POST['id'])."',
    '".mysql_real_escape_string($_POST['pass'])."')";
...