簡體   English   中英

INSERT INTO數據庫表,從表單不起作用。 SQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM