2017-04-04 76 views
-2

即時通訊新的MySql和PHP和即時通訊嘗試做一個CRUD,但每次我嘗試插入數據到表中稱爲「studenti」我得到的錯誤,我沒有選擇一個數據庫,但我選擇了mysqli_select_db($ con,「d_base」);我GET「沒有數據庫選擇」錯誤,即使選擇了

有人請幫助我,因爲我不明白爲什麼它不幹活的

下面是代碼;

$id = $_POST['ID']; 
$nota = $_POST['Nota']; 
$emri = $_POST['Emri']; 
$mbiemri = $_POST['Mbiemri']; 



$servername = "localhost"; 
$dbname = "d_base"; 

// 1.Create connection 
$con = mysqli_connect("localhost","d_base"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    if (!mysqli_query($con,"INSERT INTO studenti (id, nota, emri, mbiemri) VALUES ('$id', '$nota','$emri','$mbiemri')")) 
    { 
    echo("Error description: " . mysqli_error($con)); 
    } 

// Perform queries 
mysqli_select_db($con, "d_base"); 
mysqli_query($con,"INSERT INTO studenti (id, nota, emri, mbiemri) VALUES ('$id', '$nota','$emri','$mbiemri')"); 
mysqli_close($con); 
+0

你選擇它後* *第一個查詢 –

+2

您的代碼很容易受到SQL注入式攻擊。您應該使用[mysqli](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)或[PDO](http://php.net/manual/en/pdo.prepared- statement.php)按照[本文]中描述的準備語句(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)。 –

+0

連接後必須選擇它,而不是在連接後選擇的 – clearshot66

回答

0

之前的所有,如果你是一個初學者直行PDO或使用mysqli預處理語句的安全。

下面是您的PHP和HTML表單必須如何工作的例子。

首先,您必須檢查是否按下提交按鈕,如果其按下的讀取值形成$_POST變量形式。

第二件事你必須使用函數mysqli_real_escape_string()逃避注入你的mysql。

之後嘗試插入查詢並檢查錯誤,如果沒有錯誤查詢將被插入成功。

PHP代碼

<?php 

// set error report ; 1 = on | 0 = off 
error_reporting(1); 

$db_host = "localhost"; // host 
$db_user = "root";  // database username 
$db_pass = "";   // database password 
$db_name = "d_base"; // database name 

// 1.Create connection 
$con = mysqli_connect($db_host, $db_user, $db_pass, $db_name); 

// Check connection 
if (mysqli_connect_errno()) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

// if form is submited 
if (isset($_POST['submit'])) 
{ 
    // escape post variables 
    $id = mysqli_real_escape_string($con, $_POST['ID']); 
    $nota = mysqli_real_escape_string($con, $_POST['Nota']); 
    $emri = mysqli_real_escape_string($con, $_POST['Emri']); 
    $mbiemri = mysqli_real_escape_string($con, $_POST['Mbiemri']); 

    // make query 
    $query = mysqli_query($con, "INSERT INTO studenti (id, nota, emri, mbiemri VALUES ('$id', '$nota', '$emri', '$mbiemri')") 

    // check for query 
    if (!$query) 
    { 
     echo "Error description: " . mysqli_error($con); 
    } 
    else 
    { 
     echo "Query inserted."; 
    } 

    // close connenction 
    mysqli_close($con); 
} 


?> 

<form action="" method="post"> 
    <input type="text" name="ID" placeholder="Id"><br /> 
    <input type="text" name="Nota" placeholder="Nota"><br /> 
    <input type="text" name="Emri" placeholder="Emri"><br /> 
    <input type="text" name="Mbiemri" placeholder="Mbiemri"><br /> 
    <input type="submit" name="submit" value="Submit form"> 
</form> 
+0

感謝u爲解釋,我剛開始在幾天前與MySQL和PHP 心中已經試過,但現在我得到另一個錯誤 無法連接到MySQL:拒絕訪問用戶d_base「 @'localhost'(使用密碼:YES) – Bishudkishu

+0

@Bishud可能您正在使用錯誤的數據連接數據庫。您可以在**用戶帳戶**選項卡中檢查您的數據庫用戶名和密碼,在phpmyadmin下,您可以在此圖像中看到http://image.prntscr.com/image/361edc80d14b4194aa35f91919375508.jpeg – Mario

+0

這與我看到的是一樣的當我打開用戶帳戶 – Bishudkishu

相關問題