[英]PHP and MySQL query based on user input not working
我正在創建一個有4個字段的用戶數據庫:ID,用戶名,密碼和職業。 這是一個測試數據庫。 我嘗試查詢數據庫表,但它有效,但是在用戶輸入和基於該表的MySQL查詢方面遇到了很多麻煩。 我在Linux(Debian,Ubuntu)上運行Apache服務器。
我有2頁。 第一個是准系統測試索引頁。 這是人們可以在其中輸入簡單信息以將其信息注冊到數據庫中的文本框的地方。 這是它的代碼:
<html> <form action="reg.php" method="POST"> Username: <input type="text" name="u">Password: <input type="password" name="p">Occupation: <input type="text" name="o"> <input type="submit" value="register"> </form> </html>
單擊提交按鈕后。 它進入reg.php文件。 這是復雜的地方。 頁面空白!!! 數據庫中未顯示或輸入任何內容。 普通查詢工作良好,但是添加用戶交互時,出現了問題。 這是reg.php的代碼:
<?php $un = $_POST["u"] $pk = $_POST["p"] $ok = $_POST["o"] $u = mysql_real_escape_string($un); $p = mysql_real_escape_string($pk); $o = mysql_real_escape_string($ok); $link = mysql_connect('localhost', 'root', 'randompassword'); if (!$link){ die(' Oops. We Have A Problem Here: ' . mysql_error()); } if ($link){ echo 'connected succesfully'; } mysql_select_db("forum") or die(' Oops. We Have A Problem Here: ' . mysql_error()); $data = mysql_query("INSERT INTO users (username, password, occupation) VALUES ('{$u}', '{$p}', '{$o}')"); ?>
誰能幫助我更正此代碼以使其正常工作? 非常感謝您的參與。 非常感激。
編輯:我注意到我沒有在前3行中添加分號。 這樣做之后,我收到以下錯誤消息:“您的SQL語法有錯誤;請查看與MySQL服務器版本相對應的手冊,以在第1行的'{','','')'附近使用正確的語法”。 有人可以解釋為什么嗎?
編輯:該網站就在我的本地計算機上...在Linux上的Apache服務器上
您在前三行中缺少分號。
$un = $_POST["u"];
$pk = $_POST["p"];
$ok = $_POST["o"];
mysql_real_escape_string()
需要數據庫連接。 嘗試這個 ....
<?php
$un = $_POST["u"];
$pk = $_POST["p"];
$ok = $_POST["o"];
$link = mysql_connect('localhost', 'root', 'randompassword');
if (!$link){
die(' Oops. We Have A Problem Here: ' . mysql_error());
}
if ($link){
echo 'connected succesfully';
}
mysql_select_db("forum") or die(' Oops. We Have A Problem Here: ' . mysql_error());
$u = mysql_real_escape_string($un);
$p = mysql_real_escape_string($pk);
$o = mysql_real_escape_string($ok);
$sql = "INSERT INTO users (username, password, occupation) VALUES ('$u', '$p', '$o')";
$ins_sql = mysql_query($sql);
IF($ins_sql) {
echo 'Inserted new record.';
}ELSE{
echo 'Insert Failed.';
}
?>
嘗試將其添加到腳本頂部:
error_reporting(E_ALL);
ini_set("display_errors", 1);
這樣,您將看到語法上甚至在SQL中所犯的所有錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.