在MySQL数据库中添加行

时间:2013-12-21 16:58:47

标签: php mysql sql

我是数据库和SQL的新手,我正在学习编程。我有一张像this这样的表格。我使用phpMyAdmin。

我必须填写表格,当我点击按钮submit时,我必须在此数据库中添加一些名为“europe”的数据。

<form action="addtime.php" method="POST">
 //html table
 <p align="center"><input value="Send record" type="submit"></p>
</form>

在这里你可以看到addtime.php

<?php

$con=mysqli_connect("localhost","username","password","my_mk7vrlist");

mysql_query(INSERT INTO europe (Num,playername,Friendcode,Country,Skype,Twitter,Youtube) VALUES (3, "kjghskj", "t4glofshgk", "es", "jgd", "49hfis", "vvvv44444"));

mysqli_close($con);
?>

数据库名称为 my_mk7vrlist ,表格名称为欧洲。我有一个错误,上面写着“第22行意外的T_STRING”。在该行上有函数mysql_query();

我错过了什么?

6 个答案:

答案 0 :(得分:2)

将您的查询放在引号内。单/双引号很好。

<?php
$con=mysqli_connect("localhost","usernale","password","my_mk7vrlist");

mysqli_query($con, 'INSERT INTO europe (Num,playername,Friendcode,Country,Skype,Twitter,Youtube) VALUES (3, "kjghskj", "t4glofshgk", "es", "jgd", "49hfis", "vvvv44444")');

mysqli_close($con);

并将mysql_query更改为mysqli_query(程序样式)

答案 1 :(得分:2)

  

mysqli_query(“INSERT INTO ...

可能require the db $link

mysqli_query($con, "INSERT INTO...

答案 2 :(得分:1)

像这样重写您的查询

mysql_query("INSERT INTO `europe` (`Num`,`playername`,`Friendcode`,`Country`,`Skype`,`Twitter`,`Youtube`) VALUES (3, 'kjghskj', 't4glofshgk', 'es', 'jgd', '49hfis', 'vvvv44444')");

此外,请停止使用 mysql_* 功能,因为它们已被弃用。改为使用MySQLi或PDO。

答案 3 :(得分:1)

我已经处理了PHP,但这应该有效(对用户名,密码和数据库字段进行适当的更改;我删除了数据库的名称以强制您重新编写它,以防它是实际拼错了):

<?php

$con = mysqli_connect('localhost', 'user_name', 'password', 'database');

mysqli_query($con, "INSERT INTO europe (Num, playername, Friendcode, Country, Skype, Twitter, Youtube) VALUES (3, 'kjghskj', 't4glofshgk', 'es', 'jgd', '49hfis', 'vvvv4444'");

mysqli_close($con);

?>

我建议如下:

<?php

$db_con = mysqli_connect('localhost', 'user_name', 'password', 'database');

$db_query = "INSERT INTO europe"
    . " (Num, playername, Friendcode, Country, Skype, Twitter, Youtube)"
    . " VALUES (3, 'kjghskj', 't4glofshgk', 'es', 'jgd', '49hfis', 'vvvv4444'";

mysqli_query($db_con, $db_query);

mysqli_close($db_con);

?>

简而言之,正如其他人所提到的,当您将SQL传递给mysql_query和mysqli_query函数时,它需要是一个String数据类型(双引号或单引号)。

在这个示例中,您不需要双引号,但我建议您养成习惯,因为通常在使用数据库时,您不会传递上述原始值;你将把变量传递给字符串,双引号允许(单引号字符串不能在PHP中进行检查)。考虑到这一点,因为您的原始代码将您的连接变量封装在双引号中;这意味着PHP的解释器将首先检查变量,然后解释实际的字符串。

然而,其他人遗漏的东西(当我开始写这篇文章时)是你在编写程序而不是利用mysqli对象;这需要你将连接变量传递给mysqli_query,否则它将如何查询数据?

所以,这就是为什么$ db_con是第一个参数,$ db_query是第二个参数。作为参考,您也可以这样做(作为对象):

<?php

$db = new mysqli('localhost', 'user_name', 'password', 'database');

$db_query = "INSERT INTO europe"
    . " (Num, playername, Friendcode, Country, Skype, Twitter, Youtube)"
    . " VALUES (3, 'kjghskj', 't4glofshgk', 'es', 'jgd', '49hfis', 'vvvv4444'";

$db->query($db_query);

$db->close();

?>

我还建议不要使用变量名“con”,而是使用像“db_con”这样不太模糊的东西,因为看到变量名称而只看变量名的人通常不会知道“con”的意思;使用“db”前缀,他们可以更容易地推断出这是一个数据库连接变量。

我记得的“意外的T_STRING”是一种愚蠢的错误(它可能意味着许多事情),但通常会暗示语法错误;例如,缺少括号,缺少分号,缺少引号等等。通常,你会看到它提到或之前的行的开头;我提到这个是因为我不能假设第22行是唯一的错误,除非PHP在它的错误协议中走得很远。

另外,我将你的声明分为两部分;查询变量和查询函数调用。这又是语义和不必要的,但你会发现以这种方式维护和阅读更容易。我将查询变量分解为单独的行,以突出显示SQL查询中的重要逻辑转换。现在再次这是不必要的,但重要的是要考虑将来的情况,当您的查询变得更复杂时(特别是在使用连接时)。

此外,我建议您的字段名称保持一致;我注意到“playername”没有大写,其他的都是大写的。我建议将它们全部保持为小写,并用“_”分隔内部单词。一致性比代码更重要,因为大多数时间进入调试而不是实际编程。

如果有任何不对劲或者如果有任何错误(我会在必要时进行编辑),我道歉,自从我使用PHP以来已经有一段时间了。

  

参考文献:

     

http://www.php.net/manual/en/mysqli.query.php

答案 4 :(得分:0)

“用户名”你是对的吗?也许是“用户名”并在查询中添加引号''

答案 5 :(得分:0)

您的sql查询是一个字符串,因此请将其正确包围:

"INSERT INTO europe (Num,playername,Friendcode,Country,Skype,Twitter,Youtube) 
VALUES (3, 'kjghskj', 't4glofshgk', 'es', 'jgd', '49hfis', 'vvvv44444')"