/ *我在我的php管理员中设置了一个数据库并使用了Dreamweaver。不确定 为什么它不起作用。 $ vars取自我使用的ftp站点。这是 代码:* /
<?php
$db_host = "host";
$db_username = "user_name";
$db_pass = "password";
$db_name = "db_name";
@mysql_connect($db_host, $db_username $db_pass) or die ("Could not connect
to MySQL");
@mysql_select_db($db_name) or die ("No database");
$sql = "INSERT INTO 'signups' (FirstName, LastName, email,CompanyName,
JobTitle, ProductSector,ProductWebsite,ProductName,id)
VALUES ('$FirstName', '$LastName', '$email','$CompanyName', '$JobTitle',
'$ProductSector','$ProductWebsite','$ProductName','$id')";
?>
答案 0 :(得分:1)
我意识到这是一个快速而简单的方法。连接MySQL的方法 - 但它非常容易Sql injection。 parameterized query是一种更安全的方法。另外,&#39; mysql&#39;驱动程序不应该使用驱动程序deprecated and will not exist in php7。相反,sql的MySQLi或PDO driver(首选)将被使用。 PHP网站上不再记录MySQL_connect。
即使这是一个测试环境,我也强烈建议尽早切换到安全驱动程序。
正如Elias Nicolas所指出的那样......将@符号放在mysql_connect前面会导致您必须跳过任何错误&#39;跳过&#39;。该错误不会记录,并且当它存在时,它会使它看起来没有问题。
编辑:这将让你接近Mysqli - 应该已经存在于php的扩展中。您可能需要在php.ini中启用它。此外,您可能需要单个&#39;在?周围标记。即:(&#39;?&#39;)。
// don't forget to sub the vars!
$db_host = "host";
$db_username = "user_name";
$db_pass = "password";
$db_name = "db_name";
$link = new mysqli($db_host, $db_username, $db_pass, $db_name) or die ('Could not connect to the database server' . mysqli_connect_error());
$sql = <<<QUERY
INSERT INTO signups
(FirstName, LastName, email, CompanyName, JobTitle, ProductSector, ProductWebsite, ProductName, id)
VALUES
(?,?,?,?,?,?,?,?,?);
QUERY;
if ($stmt = $mysqli->prepare($sql))
{
$stmt->bind_param("sssssssss", $FirstName, $LastName, $email, $CompanyName, $JobTitle, $ProductSector, $ProductWebsite, $ProductName, $id);
$stmt->execute();
}
$link->close();
答案 1 :(得分:0)
对于您的表名,列的名称而不是值,您使用`而不是&#39;。你的SQL应该是这样的。
INSERT INTO `signups` (`FirstName`, `LastName` `email`, `CompanyName`,
`JobTitle`, `ProductSector'`,`ProductWebsite`,`ProductName`,`id`)
VALUES ('$FirstName', '$LastName', '$email','$CompanyName', '$JobTitle',
'$ProductSector','$ProductWebsite','$ProductName','$id')
希望有所帮助。