[英]Why doesn't my php connect to sql database code work?
/ *我已經在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')";
?>
我意識到這是連接MySQL的“快速簡便”方法-但極易發生Sql注入 。 參數化查詢是一種更安全的方法。 另外,不應使用“ mysql”驅動程序,因為該驅動程序已被棄用,並且在php7中將不存在 。 相反,將使用用於MySQL的MySQLi或PDO驅動程序 (首選)。 MySQL_connect不再記錄在PHP網站上。
即使這是一個測試環境,我也強烈建議您盡早切換到安全驅動程序。
正如Elias Nicolas指出的那樣...將@符號放在mysql_connect前面會導致任何錯誤,您必須“跳過”。 該錯誤不會記錄下來,它將使它看起來好像沒有問題時一樣。
編輯:這將使您接近Mysqli-應該已經存在於php的擴展名中。 您可能需要在php.ini中啟用它。 另外,您可能需要在?sie:('?')周圍加一個'。
// 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();
對於表名以及列名而不是值,請使用`代替'。 您的sql應該看起來像這樣。
INSERT INTO `signups` (`FirstName`, `LastName` `email`, `CompanyName`,
`JobTitle`, `ProductSector'`,`ProductWebsite`,`ProductName`,`id`)
VALUES ('$FirstName', '$LastName', '$email','$CompanyName', '$JobTitle',
'$ProductSector','$ProductWebsite','$ProductName','$id')
希望能有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.