【发布时间】:2013-12-17 17:09:22
【问题描述】:
所以我使用 HTML 表单将信息发布到 php,然后使用 php 脚本将其发送到数据库。但是我不断收到 $first_name 的意外变量 (t_variable) 的解析错误。这是我的代码
<?php
$first_name = $_POST ['firstname'];
$last_name = $_POST ['lastname'];
$email = $_POST ['email'];
$db_host = "localhost";
$db_username = "root";
$db_pass = "password";
$db_name = "db_name";
//connect to database
@mysql_connect ("$db_host", "$db_username", "$db_pass") or die ("Unable to connect to database at the moment. Please try again later.") ;
//select the database to work with
@mysql_select_db("$db_name") or die("No such database");
mysql_query("INSERT INTO users (id, first, last, email) VALUES ('', "$first_name", "$last_name", "$email") " );
?>
phpmyadmin 中的字段类型 id 是 INT(25 长度) - 自动递增,因此无需提供它。 其他都是 varchar(255 长度)
注意:我已经对这些值进行了硬编码并且它有效,只是在我尝试传递变量时不起作用。我也尝试过不带引号的变量,但它不起作用。
我该如何解决这个问题?
谢谢
已修复!!!参数周围的单引号起作用。还删除了 id 字段,因为它是自动递增的。现在也在看mysqli。谢谢你们的帮助。
【问题讨论】:
-
您的所有代码都需要工作。 不要使用
@抑制错误;这就像在您的 Check Engine Light 上贴上胶带。mysql_函数已弃用,请使用mysqli_或PDO。了解准备好的语句。 -
你看过任何例子吗?此外,使用任何未过时的数据库 API 和绑定参数都不会有这个问题。
-
将
VALUES ('', "$first_name", "$last_name", "$email")中的双引号改为单引号 -
"$db_name"很好,但为了安全起见,您应该这样做:(string)strval("$db_name")。 -
谢谢大家,是的,我也在研究 mysqli,但我的教授希望我们使用 mysql,然后再次在 mysqli 中使用(不知道为什么)。单引号起到了作用!谢谢