簡體   English   中英

PHP SQL字符串賦值會引發服務器錯誤

[英]PHP SQL string assignment throws a server error

我試圖讓PHP首次連接到Apache服務器上的MySQL數據庫。 下面是我正在使用的簡單PHP代碼。

 <?php
// To ensure that the $_POST superglobal is accessible.
print_r($_POST);
print_r($_POST['usertype']);

$db = mysqli_connect("localhost", "root", "", "rental_26349188");
if (mysqli_connect_errno()) {
  mysqli_connect_error();
  exit;
}

$sql = "INSERT INTO user_information (usertype, firstname, lastname, phonenumber, email, loginname, password) VALUES (".$_POST['usertype'].", ".$_POST['firstname'].", ".$_POST['lastname'].", ".$_POST['phonenumber'].", ".$_POST['email'].", ".$_POST['loginname'].", ".$_POST['password'].");"

mysqli_query($db, $sql);

mysqli_close($db); 
?>

之前使用以下SQL命令創建了數據庫表:

CREATE TABLE IF NOT EXISTS `user_information` (   `id` int(255) NOT NULL,   `usertype` varchar(255) NOT NULL,   `firstname` varchar(255) NOT NULL,   `lastname` varchar(255) NOT NULL,   `phonenumber` varchar(255) NOT NULL,   `email` varchar(255) NOT NULL,   `loginname` varchar(255) NOT NULL,   `password` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `user_information`   ADD PRIMARY KEY (`id`);

ALTER TABLE `user_information`   MODIFY `id` int(255) NOT NULL AUTO_INCREMENT;

加載頁面時收到以下錯誤。

在此輸入圖像描述

奇怪的是,我發現在PHP代碼中注釋掉$sqlmysqli_query行使得它不會引發錯誤。 我也嘗試以面向對象的方式編寫mysqli命令,以及使用大括號替換將$_POST['key']內容插入到字符串中(即。 {$_POST['key']} ) ,所有這些都產生了相同的結果。 很明顯,PHP能夠訪問數據庫,因為它可以與它連接並關閉它。

為什么SQL字符串賦值給PHP變量導致內部服務器500錯誤? 如何更正我的代碼以便不產生錯誤?

響應500 Internal Error通常意味着編譯問題,腳本中存在語法錯誤。

關於你的腳本,行

$sql = "INSERT INTO user_information ... .$_POST['password'].");"

不會以分號( ; )結束(或者將它放在字符串中)。 在行尾添加它,狀態代碼500將消失。

我看到你沒有使用“'”作為值 - 你確定沒有一個值有空格。 同樣以這種方式使用直接用戶輸入到SQL查詢也不是一個好主意,因為它允許sql注入。 MySQL有bindParam機制,這使它安全 - 我強烈建議查看文檔。 我知道我的筆記遠離當前的問題,但因為你告訴它首先是你與MySQl的聯系,我讓我自己去做。 問候

嘗試:

$db = mysqli_connect("localhost", "root", "", "rental_26349188");
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  exit;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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