0

請問一下php mysql 用insert into 資料寫入的問題

fsh18108 6 年前35524 瀏覽

這個問題困擾我二天了..
前陣子我在cashfreeweb的網站有申請支援php語法的免費空間
我的需求只是要將簡單的訂購單按送出後可以將填寫的資料寫入到mysql資料庫裡
我將簡單的php網頁上傳到免費空間後,登入網站提供的phpmyadmin,送出的資料都沒問題
也就是資料寫入是正常的,但最近該免費空間好像倒了..
所以我就自己安裝了xampp的軟件,apache和mysql以及phpmyadmin都啟動正常
可是php網頁送出後,登入到phpmyadmin裡卻都沒有資料
我在phpmyadmin裡直接新增資料卻是正常的,如果將新增的sql語法複製再貼到php網頁裡執行卻是一樣新增不了
以下這段是我從phpmyadmin複製的,test是資料庫~table是資料表
我測試將aa bb cc dd ee ff的欄位寫入1的數字(寫完後有刪掉)
$sql = "INSERT INTO test.table (aa, bb, cc, dd, ee, ff) VALUES (\'1\', \'1\', \'1\', \'1\', \'1\', \'1\');";
但是在php網頁執行後一樣沒資料..而且都沒有錯誤訊息..請問一下這是什麼原因?
是php.ini、my.ini還是apache裡的config.conf裡的設定沒有設好嗎?

以下是php的語法

<p class="style1 style3">訂購的公司名稱:<?php echo $_POST['send']; ?></p>
<p class="style1 style3">聯絡人姓名:<?php echo $_POST['send2']; ?></p>
<p class="style1 style3">訂購園遊券張數:<?php echo $_POST['select2']; ?></p>
<p class="style2">訂購餐券張數:<?php echo $_POST['select3']; ?></p>
<p class="style2">聯絡電話或手機:<?php echo $_POST['send22']; ?></p>
<p class="style2">留言訊息:<?php echo $_POST['message']; ?></p>
<p class="style2"> </p>
<p class="style1"> </p>
<?php
$a = $_POST['send'];
$b = $_POST['send2'];
$c = $_POST['select2'];
$d = $_POST['select3'];
$e = $_POST['send22'];
$f = $_POST['message'];
mysql_connect('localhost','ms','572958') or die("connect error!");
mysql_select_db('test') or die("db error");
mysql_query("SET NAMES 'utf8'");
$query = "INSERT INTO table (aa,bb,cc,dd,ee,ff) VALUES ('$a','$b','$c','$d','$e','$f')" or die("insert error");
mysql_query($query);
?>

比較奇怪的是帳號或者資料庫名字如果打錯會出現錯誤
但是資料表打錯的話不會有錯誤,資料也都寫不進去
這跟phpmyadmin的使用者權限有關嗎?(我已將使用者權限全選了)
麻煩高手幫忙,謝謝

看更多先前的討論...收起先前的討論...
fillano iT邦超人 3 級 ‧ 6 年前 檢舉
您的or die("insert error");擺錯地方了?
fillano iT邦超人 3 級 ‧ 6 年前 檢舉
另外,強烈建議您不要這樣子直接把post/get收到的值直接放進資料庫,這是php程式受到sql injection攻擊的主因,請至少用mysql_real_escape_string處理過。
fsh18108 iT邦新手 5 級 ‧ 6 年前 檢舉
請教一下..
<?php
$a = $_POST['send'];
$b = $_POST['send2'];
$c = $_POST['select2'];
$d = $_POST['select3'];
$e = $_POST['send22'];
$f = $_POST['message'];
$mysqlConnection=mysql_connect('localhost','ms','572958') or die("connect error!");
mysql_select_db('test') or die("db error");
mysql_query("SET NAMES 'utf8'");
$queryStr = "INSERT INTO table (aa,bb,cc,dd,ee,ff) VALUES ('$a','$b','$c','$d','$e','$f')";
mysql_query($queryStr,$mysqlConnection) or die(mysql_error());
?>

會出現這個錯誤You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table (aa,bb,cc,dd,ee,ff) VALUES ('0','0','0','0','0','1')' at line 1
是哪裡有問題嗎..很奇怪都寫不進去,我快瘋嚕..
謝謝回應喔
fsh18108 iT邦新手 5 級 ‧ 6 年前 檢舉
嗯嗯
因為我是新手,主要是想測試而己
謝謝你的建議喔
16
henryi
iT邦新手 5 級 ‧ 6 年前
最佳解答

fsh18108提到:
$query = "INSERT INTO table (aa,bb,cc,dd,ee,ff) VALUES ('$a','$b','$c','$d','$e','$f')" or die("insert error");
mysql_query($query);

這邊寫錯了
$queryStr = "INSERT INTO table (aa,bb,cc,dd,ee,ff) VALUES ('$a','$b','$c','$d','$e','$f')";
mysql_query($queryStr,$mysqlConnection) or die('Insert data fail');

fsh18108 iT邦新手 5 級 ‧ 6 年前 檢舉

請教一下..我改成這樣
<?php
$a = $_POST['send'];
$b = $_POST['send2'];
$c = $_POST['select2'];
$d = $_POST['select3'];
$e = $_POST['send22'];
$f = $_POST['message'];
$mysqlConnection=mysql_connect('localhost','ms','572958') or die("connect error!");
mysql_select_db('test') or die("db error");
mysql_query("SET NAMES 'utf8'");
$queryStr = "INSERT INTO table (aa,bb,cc,dd,ee,ff) VALUES ('$a','$b','$c','$d','$e','$f')";
mysql_query($queryStr,$mysqlConnection) or die(mysql_error());
?>

會出現這個錯誤You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table (aa,bb,cc,dd,ee,ff) VALUES ('0','0','0','0','0','1')' at line 1
是哪裡有問題嗎..很奇怪都寫不進去,看起來是要寫入table這個資料表時有問題
可是我確認過很多次,欄位和資料表名稱都正確阿..加了' '也是一樣..
我快瘋嚕..
謝謝回應喔

fsh18108 iT邦新手 5 級 ‧ 6 年前 檢舉

0.0
後來我資料庫刪掉重設後就正常了
謝謝大家的回應喔

20
Albert
iT邦高手 1 級 ‧ 6 年前

mysql_connect("localhost","userName","passWord");
mysql_select_db("my_db", $con);
mysql_query($sql,$con)
mysql_close($con)

參考一下::

<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("my_db", $con);

$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";

mysql_close($con)
?>

12
灌籃高手
iT邦高手 1 級 ‧ 6 年前

php.ini裡面的magic_quotes_gpc = On,然後重啟apache

fillano iT邦超人 3 級 ‧ 6 年前 檢舉

ㄝ,magic_quote_gpc這個設定到php5.3會deprecated然後到php6會拿掉,所以不要依賴他比較好。用utf-8就可以避開許功蓋的問題了,除非是舊的系統。

灌籃高手 iT邦高手 1 級 ‧ 6 年前 檢舉

另外一個方法是修改程式,由程式來處理escape字元,例如$a = addslashes($_POST['send']);

fsh18108 iT邦新手 5 級 ‧ 6 年前 檢舉

請教一下我已經把
magic_quotes_gpc = On,然後重啟apache了
可是還是不行..

<?php
$a = $_POST['send'];
$b = $_POST['send2'];
$c = $_POST['select2'];
$d = $_POST['select3'];
$e = $_POST['send22'];
$f = $_POST['message'];
$mysqlConnection=mysql_connect('localhost','ms','572958') or die("connect error!");
mysql_select_db('test') or die("db error");
mysql_query("SET NAMES 'utf8'");
$queryStr = "INSERT INTO table (aa,bb,cc,dd,ee,ff) VALUES ('$a','$b','$c','$d','$e','$f')";
mysql_query($queryStr,$mysqlConnection) or die(mysql_error());
?>

會出現這個錯誤You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table (aa,bb,cc,dd,ee,ff) VALUES ('0','0','0','0','0','1')' at line 1
是哪裡有問題嗎..很奇怪都寫不進去,看起來是要寫入table這個資料表時有問題
可是我確認過很多次,欄位和資料表名稱都正確阿..加了' '也是一樣..
我快瘋嚕..
謝謝回應喔

我要發表回答

立即登入回答