我无法使用php将文本上传到Mysql

时间:2017-10-14 07:31:09

标签: php html mysql

我正在尝试创建评论板。这是我的PHPMyAdmin创建的表 enter image description here

我将guestID设置为主键并自动增加,但每次我尝试通过php输入新的访客名时,它只能创建一个带有新ID但没有名称的新列。 enter image description here

这是我的代码:

<?php
mysql_connect("localhost","root","root");
mysql_select_db("guest");
mysql_query("set names utf8");

$guestName=$_POST['guestName'];


mysql_query("insert into guest value(`guestID`, `guestName`)");


?>
<!DOCTYPE html>


<body>
<div class="container">
<div class="top">
<h3>New comment</h3>
</div>
<form id="form1" name="form1" method="post" action="" class="form-horizontal">
    <div class="form-group">
        <label for="guestName" class="col-sm-4 control-label">Name:</label>
        <div class="col-sm-6">
            <input type="text" class="form-control" placeholder="guestName" name="guestName" id="guestName" />
        </div>


    <div class="button">
        <input type="submit" name="button" id="button" value="send" class="btn"/>
    </div>
</form>

2 个答案:

答案 0 :(得分:0)

您不会将变量的值替换为查询。值列表前的关键字为values,而不是value

$guestName = mysql_real_escape_string($_POST['guestName']);

mysql_query("insert into guest (guestName) values ('$guestName')");

请注意,您必须在字符串周围使用单引号,而不是反引号。见When to use single quotes, double quotes, and backticks in MySQL

您还应该升级到mysqliPDO并使用预准备语句而不是过时的mysql扩展名。但是如果使用mysql,则应该转义用户输入以防止SQL注入。

答案 1 :(得分:0)

由于您已为guestID字段设置了主键和自动增量,因此不要在插入查询中使用它,因为当您插入新行时,它将自动获得增量值。你犯的另一个错误是,你还没有传递列名。

$guestName=$_POST['guestName'];


mysql_query("insert into guest (guestName) value(".$guestName.") ");

在上面提到的查询中,请注意有两个括号,第一个是列名,并且在相同的序列中,您需要写入值&#39;支架