基于用户输入的PHP和MySQL查询不起作用

时间:2015-03-16 21:08:24

标签: php html mysql forms phpmyadmin

我正在创建一个用户数据库,其中有4个字段:ID,用户名,密码和职业。这是一个测试数据库。我尝试查询db表并且它工作但我在用户输入和基于它的MySQL查询时遇到了很多麻烦。我在Linux(Debian,Ubuntu)中运行Apache服务器。

我有2页。第一个是裸骨测试索引页面。这是有文本框供人们输入简单信息以在db中注册他们的信息。这是代码:



<html>
<form action="reg.php" method="POST">
  Username:
  <input type="text" name="u">Password:
  <input type="password" name="p">Occupation:
  <input type="text" name="o">
  <input type="submit" value="register">


</form>

</html>
&#13;
&#13;
&#13;

单击提交按钮后。它转到reg.php文件。这是它变得复杂的地方。页面空白!!!数据库中没有显示或输入任何内容。普通查询运行良好,但是当添加用户交互时,出现问题。以下是reg.php的代码:

&#13;
&#13;
<?php
$un = $_POST["u"]
$pk = $_POST["p"]
$ok = $_POST["o"]
$u = mysql_real_escape_string($un);
$p = mysql_real_escape_string($pk);  
$o = mysql_real_escape_string($ok);    

$link = mysql_connect('localhost', 'root', 'randompassword');
if (!$link){
die(' Oops. We Have A Problem Here: ' . mysql_error());
}

if ($link){
echo 'connected succesfully';
}

mysql_select_db("forum") or die(' Oops. We Have A Problem Here: ' . mysql_error());
$data = mysql_query("INSERT INTO users (username, password, occupation) VALUES ('{$u}', '{$p}', '{$o}')");

?>
&#13;
&#13;
&#13;

有人可以帮我纠正这段代码吗? 非常感谢您的参与。非常感激。

编辑: 我注意到我没有在前3行中添加分号。这样做后我得到了这个错误:&#34;你的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在&#39; {&#39;&#39;&#39;&#39;&#39;&#39;&#39;)附近使用正确的语法#39;在第1行。&#34;有人可以解释原因吗?

编辑:网站就在我的本地机器上...... 在linux上的apache服务器上

3 个答案:

答案 0 :(得分:4)

你在前三行中缺少分号。

$un = $_POST["u"];
$pk = $_POST["p"];
$ok = $_POST["o"];

答案 1 :(得分:1)

mysql_real_escape_string()需要数据库连接。 试试这个....

<?php
$un = $_POST["u"];
$pk = $_POST["p"];
$ok = $_POST["o"];

$link = mysql_connect('localhost', 'root', 'randompassword');
if (!$link){
  die(' Oops. We Have A Problem Here: ' . mysql_error());
}

if ($link){
  echo 'connected succesfully';
}

mysql_select_db("forum") or die(' Oops. We Have A Problem Here: ' . mysql_error());

$u = mysql_real_escape_string($un);
$p = mysql_real_escape_string($pk);
$o = mysql_real_escape_string($ok);
$sql = "INSERT INTO users (username, password, occupation) VALUES ('$u', '$p', '$o')";
$ins_sql = mysql_query($sql);
IF($ins_sql) {
  echo 'Inserted new record.';
}ELSE{
  echo 'Insert Failed.';
}
?>

答案 2 :(得分:0)

尝试将其添加到脚本的顶部:

error_reporting(E_ALL);
ini_set("display_errors", 1);

通过这种方式,您将看到您在语法上甚至在SQL中所做的所有错误。