我是数据库和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();
。
我错过了什么?
答案 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)
答案 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以来已经有一段时间了。
参考文献:
答案 4 :(得分:0)
“用户名”你是对的吗?也许是“用户名”并在查询中添加引号''
答案 5 :(得分:0)
您的sql查询是一个字符串,因此请将其正确包围:
"INSERT INTO europe (Num,playername,Friendcode,Country,Skype,Twitter,Youtube)
VALUES (3, 'kjghskj', 't4glofshgk', 'es', 'jgd', '49hfis', 'vvvv44444')"