2016-08-15 223 views
-3

我試圖向mysql表中添加一個新的用戶名throw wordpress。但每次我嘗試這樣做時,我都沒有錯誤消息,但是沒有行添加到數據庫中。不使用wordpress和php在mysql數據庫中輸入數據

這是裏面的PHP WordPress的頁面:

<table> 
<form name="form1" method="post" action=""> 
<strong>Please enter your information in order to download the Macs Cabs  
App</strong> 
<tr><td> 
Name:</td><td><input name="Name" type="text" id="sName"></td></tr> 
Email Address:</td><td><input name="Email" type="text" id="sEmail"></td> </tr> 
<tr><td> 
<input type="submit" name="Submit" value="Submit"></td></tr> 
</form></table> 

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

$sql="INSERT INTO `Users` (`sName`, `sEmail`) 
VALUES ('{$_POST['sName']}','{$_POST['sEmail']}')"; 


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

$info = mysql_info(); echo $info; 

mysql_close($con); 
?> 

我看不出什麼錯。我認爲這可能是連接有問題。有任何想法嗎?

謝謝!

編輯

至於建議,我試着用$wpdb所以我創建一個PHP文件的文件夾在叫我的碼(在可溼性粉劑管理員,可溼性粉劑內容和WP-同級別包括),我下面的代碼添加到文件調用insertUser.php:

<?php  
global $wpdb; 
$wpdb->insert("wp_submitted_form", array(
"sName" => $sName, 
"sEmail" => $sEmail)); 
?> 

現在,在我的網頁我試着去調用這個函數和進出口這樣做:

<table> 
<form name="form1" method="post" action=""> 
<strong>Please enter your information in order to download the Macs Cabs  
App</strong> 
<tr><td> 
Name:</td><td><input name="Name" type="text" id="sName"></td></tr> 
Email Address:</td><td><input name="Email" type="text" id="sEmail"></td>  </tr> 
<tr><td> 
<input type="submit" name="Submit" value="Submit"></td></tr> 
</form></table> 
<?php 
if(isset($_POST['Submit'])) 
    { 
    include("./my-codes/insertUsers.php"); 
    } 
?> 

而我仍然無法在數據庫中插入任何行。有什麼建議麼?

編輯 我需要一個插件來實際連接我的sql數據庫和wordpress。代碼是正確的。

+1

注意:'mysql_ *'函數已被棄用,它們已從PHP 7中刪除,當您升級到該版本時,您的代碼將停止工作。您不應使用它們編寫新代碼,而應使用['mysqli_ *'或PDO](http://php.net/manual/en/mysqlinfo.api.choosing.php)。 –

+0

這是一個WordPress的頁面?有沒有WordPress的功能... – Lee

+0

你應該使用'$ wpdb'在Wordpress中進行數據庫查詢 – Lee

回答

2

與我所提供的代碼替換代碼。

<table> 
    <form name="form1" method="post" action=""> 
    <strong>Please enter your information in order to download the Macs Cabs  
    App</strong> 
    <tr><td> 
    Name:</td><td><input name="Name" type="text" id="sName"></td></tr> 
    Email Address:</td><td><input name="Email" type="text" id="sEmail"></td> </tr> 
    <tr><td> 
    <input type="submit" name="Submit" value="Submit"></td></tr> 
    </form></table> 

    <?php 
    $con = mysql_connect("localhost","root","root"); // ensure that your password in empty or root in your localhost 
    if (!$con) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } 
    mysql_select_db("foundint_Sababa", $con); 

    if(isset($_POST['Submit'])) 
    { 
     // Previous Insert Query which has discrepency in form input names and Insert Values 
     //$sql="INSERT INTO `Users` (`sName`, `sEmail`) VALUES ('{$_POST['sName']}','{$_POST['sEmail']}')"; 

     // My new Query with corrected form input names for Input Values during POST. 
     $sql = "INSERT INTO `Users`(`sName`, `sEmail`) VALUES ('".$_POST['Name']."','".$_POST['Email']."')"; 
     if (!mysql_query($sql,$con)) 
     { 
      die('Error: ' . mysql_error()); 
     } 
     echo "1 record added"; 
     $info = mysql_info(); echo $info; 
     mysql_close($con); 
    } 

終於有一個在表字段檢查名稱和我的代碼很好,希望它會爲您服務。

+0

如果您指出實際問題是什麼(表單字段名稱和所使用的變量名稱之間的差異),那麼在每個人都必須將其與原始代碼行進行比較的當前狀態下,答案會更有幫助找出差異。 –

+0

是的,我確定我會編輯並重新發布bro。爲了使它有所不同.. –

+0

不同之處在於'if(isset($ _ POST ['Submit']))'但仍然不起作用。我認爲與數據庫的連接存在問題。有什麼我在連接中失蹤可能? – SomeAnonymousPerson

1

使用查詢像這樣的做的事情發生,

$sql="INSERT INTO `Users` (`sName`, `sEmail`) VALUES ('".$_POST['sName']."','".$_POST['sEmail']."')"; 

從注射防止你可以用這種方式來建立查詢。

$name=addslashes($_POST['sName']); 
$email=addslashes($_POST['sEmail']); 
$sql="INSERT INTO `Users` (`sName`, `sEmail`) VALUES ('$name','$email')"; 

用事先準備好的聲明

$mysqli = new mysqli("example.com", "user", "password", "database"); 
$name=addslashes($_POST['sName']); 
$email=addslashes($_POST['sEmail']); 

$stmt=$mysqli->prepare("INSERT INTO `Users` (`sName`, `sEmail`) VALUES (?,?)"); 
$stmt->bind_param("ss", $name,$email); 
$stmt->execute(); 

對準備好的聲明中詳細得http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

+0

怎麼樣sql注入?該查詢非常容易理解。 – Marcel

+0

你可以使用很多方法來停止sql注入。 您可以使用默認的sql轉義函數,如htmlescape字符或使用準備好的語句來防止sql注入@ Marcel –

+0

檢查您使用的@DhavalPurohit對其進行更改的輸入值名稱,如果他複製並嘗試你的代碼。但在Wordpress中,WP查詢的使用不是mysql或預準備語句。 –

相關問題