代码不会在db中写入值

时间:2013-11-15 09:23:34

标签: php html mysql

下面的代码应该将代码写入数据库。 我分为两部分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 个答案:

答案 0 :(得分:1)

您需要告诉我们实际的错误是什么。并将PDO以及将未经过消毒的POST变量作为优先级发送到数据库的危险。

答案 1 :(得分: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。

答案 2 :(得分:0)

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

INSERT INTO clanovi
    (column1,column2,column3,...) 
VALUES 
    ( $field1, $field2, $field3,.....)

答案 3 :(得分: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回避使用文本,并传递变量! :)对我而言,这是解释报价如何破坏代码的最佳方式。

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

希望这有帮助,并且编码很快!!