0

下面的代码应该将代码写入数据库。我分为两部分 HTML 和 PHP 代码是分开的。HTML表单代码如下所示:

<form name="form1" action="insert.php" method="post">
<h3>Ime </h3> <input type="text" name="field1" > <br/> <br/>
<h3>Prezime </h3> <input type="text" name="field2" > <br/> <br/>
<h3>Firma </h3> <input type="text" name="field3" > <br/> <br/>
<h3>Adresa </h3><input type="text" name="field4" > <br/> <br/>
<h3>Telefon </h3> <input type="text" name="field5" > <br/> <br/>
<h3>Fax </h3><input type="text" name="field6" > <br/> <br/>
<h3>Mobitel </h3> <input type="text" name="field7" > <br/> <br/>
<h3>Email </h3> <input type="text" name="field8" > <br/> <br/>
<h3>Web stranica </h3> <input type="text" name="field9" > <br/> 
</form>

PhP 代码如下所示。

$host="localhost"; // Host name
$username="root"; // username
$password="le30mu09"; // password
$database="imenik"; // Database name
$tbl_name="clanovi"; // Table name

// 根据您使用的数据库替换数据库连接函数。

$field1=$_POST['field1'];
$field2=$_POST['field2'];
$field3=$_POST['field3'];
$field4=$_POST['field4'];
$field5=$_POST['field5'];
$field6=$_POST['field6'];
$field7=$_POST['field7'];
$field8=$_POST['field8'];
$field9=$_POST['field9']; 

$link=mysql_connect("$host", "$username", "$password");
if (!$link) {
    die('Could not connect: ' . mysql_error());
}

// make foo the current db
$db_selected = mysql_select_db("$database");
if (!$db_selected) {
    die ('db is not selected : ' . mysql_error());
}

   $query = "INSERT INTO `clanovi`(`Ime`, `Prezime`, `Firma`, `Adresa`, `Telefon`, `Fax`, `Mobitel`, `Email`, `Web_stranica`) VALUES ( "$field1", "$field2", "$field3", "$field4", "$field5", "$field6", "$field7", "$field8", "$field9")"; 

mysql_query($query);
mysql_close();
4

4 回答 4

1

您需要告诉我们实际的错误是什么。并强调 PDO 以及将未经处理的 POST 变量发送到数据库的危险作为优先事项。

于 2013-11-15T09:27:41.323 回答
0

您似乎在不应该使用引号的地方使用了很多引号。有趣的是,您可以编写 5 个小时的代码,然后尝试调试 2 个小时,因为一个简单的引号!这很有趣,同时也很令人沮丧:(

好的,让我们稍微修正一下代码!

数据库

$link=mysql_connect($host, $username, $password);
if (!$link) {
    die('Could not connect: ' . mysql_error());
}

// make foo the current db
$db_selected = mysql_select_db($database);
if (!$db_selected) {
    die ('db is not selected : ' . mysql_error());
}

请注意我是如何从代码中去掉所有引号的?这将有助于数据库连接和选择。

现在让我们开始将信息实际插入数据库!

$query = "INSERT INTO clanovi ('Ime', 'Prezime', 'Firma', 'Adresa', 'Telefon', 'Fax', 'Mobitel, 'Email', 'Web_stranica') VALUES ( $field1, $field2, $field3, $field4, $field5, $field6, $field7, $field8, $field9)"; 

再一次,我去掉了所有的引号。另外,我删除了反引号并替换为 ' 并从您的表名中删除了 '' - 在不使用变量时,您应该只使用引号。

//Correct
VALUES ($field1, "textnotvariable", $field2...

//Incorrect
VALUES ("$field1", "textnotvariable", "field2"...

echo 语句也是如此。这是一个例子......

$myname = "MrJustin";

//Correct
echo $myname;

    //or

echo "My name is ". $myname .", it's nice to meet you!";

//Incorrect 

echo "My name is $myname, it's nice to meet you";

你会注意到我是如何使用“.$myname”的。- 告诉 echo 停止使用文本,并传递一个变量!:) 对我来说,这是解释引用如何破坏代码的最佳方式。

哦,在使用外部代码时,您应该始终清理您的输入/输出。我会在那个上面做一些谷歌搜索,然后如果你遇到问题,请与我们聊天!

希望这会有所帮助,并且编码愉快!

于 2013-11-15T10:18:50.073 回答
0

您没有选择数据库。您使用的是双引号而不是它的位置。

替换这个

  $db_selected = mysql_select_db("$database");

经过

 $db_selected = mysql_select_db($database);

并替换这个

 $link=mysql_connect("$host", "$username", "$password");

经过

 $link=mysql_connect($host, $username, $password);
  • 我建议您改用 PDO 或 mysqli。
于 2013-11-15T09:26:07.857 回答
0

修改您的Insert查询。它应该是这样的:

INSERT INTO clanovi
    (column1,column2,column3,...) 
VALUES 
    ( $field1, $field2, $field3,.....)
于 2013-11-15T09:28:14.750 回答