[英]INSERT INTO database table, from form not working. SQL
讓我直接解決我的問題,我在這里寫的代碼不會寫入我的數據庫,我無法弄清楚為什么。 目前我只是試圖掌握php和sql所以除了學習之外沒有任何意義。 這是我得到的錯誤(第一句'連接到數據庫'來自我的if語句):
“連接到databaseError:您的SQL語法中有錯誤;請檢查與您的MySQL服務器版本對應的手冊,以便在第1行的''test'('name')VALUES('daniel')附近使用正確的語法“
我的代碼可能看起來有點混亂,因為其中一些來自w3schools,有些來自朋友。 我無法弄清楚為什么這段代碼不起作用,我已經嘗試了很多基於我在網上找到的文章和stackoverflow的語法變體,但似乎都沒有。 我擔心也許我甚至不是數據庫的連接,雖然我的if語句告訴我,否則這可能是一個問題?
希望如果這個問題得到解決,這個問題將澄清數據庫連接並在一次命中中從表單寫入數據庫。 在此先感謝大家,這是我的代碼。
HTML
<form action="insert.php" method="post">
Name: <input type="text" name="namefield" />
<input type="submit" />
</form>
PHP(insert.php)
<?php
$dbhost = 'localhost';
$dbname = 'carbon_db';
$dbuser = 'username';
$dbpass = 'password';
$con = mysql_connect($dbhost, $dbuser, $dbpass);
if($con == FALSE)
{
echo 'Cannot connect to database' . mysql_error();
}
else
{
echo 'Connected to database';
}
mysql_select_db($dbname, $con);
$sql="INSERT INTO 'test' ('name')
VALUES ('$_POST[namefield]')";
if (!mysql_query($sql, $con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con)
?>
刪除表名周圍的引號或將其更改為后退標記:
更改:
$sql="INSERT INTO 'test' ('name') VALUES ('$_POST[namefield]')";
至:
$sql="INSERT INTO test ('name') VALUES ('$_POST[namefield]')";
要么
$sql="INSERT INTO `test` ('name') VALUES ('$_POST[namefield]')";
對於MySQL來說,通常最好使用反引號,就像任何其他存儲引擎一樣,它擁有自己的保留名稱,並且它是自己的保留插入實踐。
嘗試
$sql = "INSERT INTO `test` (`name`) VALUES ('".$_POST['namefield']."')";
將表名和列名周圍的單引號更改為反引號。 或者一起擺脫它們。
$sql="INSERT INTO `test` (`name`) VALUES ('{$_POST['namefield']}')";
此外,不要在不使用{}
語法或分解字符串的情況下直接在字符串中引用關聯數組( $_POST
) - 您在那里發布了E_NOTICE ,應該避免。
徹底閱讀 - 你會驚訝於你可以(而且不能)在PHP字符串中合法地做什么......
在引用表/列名時嘗試使用`而不是'
$sql="INSERT INTO `test` (`name`)
VALUES ('$_POST[namefield]')";
刪除sql語句周圍的單引號並替換為back-tics(不確定它們是否必要):
$sql="INSERT INTO `test` ('name')
VALUES ('$_POST[namefield]')";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.