2016-08-15 17 views
-3

mysql table throw wordpress에 새로운 사용자 이름을 추가하려고합니다. 그러나 그것을 시도 할 때마다 오류 메시지가 없지만 데이터베이스에 추가 된 행이 없습니다. 무슨 잘못 내가 볼 수없는myspress database와 wordpress와 php로 데이터를 입력하지 마십시오

<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); 
?> 

:

이 내부 PHP와 워드 프레스 페이지입니다. 연결에 문제가있을 수 있습니다. 어떤 아이디어?

감사합니다.

편집

제안으로, 임 그래서 WP-관리, WP-내용과 WP-의 같은 레벨 내 - 코드 (전화 폴더에 PHP 파일을 만든 $wpdb를 사용하려고 포함)와 나는 파일 호출 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"); 
    } 
?> 

그리고 여전히 데이터베이스에 행을 삽입 할 수 없습니다. 어떤 제안?

EDIT 실제로 SQL Server와 wordpress를 연결하려면 플러그인이 필요합니다. 코드가 정확합니다.

+1

참고 : mysql_ * 함수는 PHP 7에서 삭제되었으며, 그 버전으로 업그레이드하면 코드가 작동을 멈 춥니 다. 새로운 코드를 써서는 안되며 대신 [mysqli_ *'또는 PDO] (http://php.net/manual/en/mysqlinfo.api.choosing.php)를 사용하십시오. –

+0

이것은 어떻게 WordPress 페이지입니까? 거기에 아무 워드 프레스 기능이 있습니다 ... – Lee

+0

당신은 워드 프레스에서 데이터베이스 쿼리를 만들기 위해'$ wpdb'를 사용해야합니다. – 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

예. 다시 편집하고 다시 게시하십시오. inorder는 그 차이를 만듭니다. –

+0

차이점은'if (isset ($ _ POST [ 'Submit']))'입니다. 그러나 여전히 작동하지 않습니다. 데이터베이스에 연결하는 데 문제가 있다고 생각합니다. 연결에 실종 된 게 있나? – SomeAnonymousPerson

1

는 쿼리를 작성하기 위해이 방법을 사용할 수 있습니다 주입으로부터 방지하기 위해, 일이 일어날

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

를 만들기 위해이 같은 쿼리를 사용합니다. 준비된 문에 대한 자세한을 위해 준비된 명령문

$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(); 

를 사용

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

내가 제공 한 코드를 사용하여 코드를 바꿉니다 http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

+0

SQL 인젝션은 어떨까요? 이 쿼리는 매우 나쁜 상태입니다. – Marcel

+0

여러 가지 방법으로 SQL 삽입을 중지 할 수 있습니다. htmlescape 문자와 같은 기본 SQL 이스케이프 기능을 사용하거나 SQL 인젝션을 방지하기 위해 준비된 명령문을 사용할 수 있습니다. @ Marcel –

+0

@DhavalPurohit을 사용한 입력 값 이름을 확인한 다음 변경하십시오 코드를 시도합니다. 그러나 Wordpress에서는 WP 질의를 사용하는 것이 mysql이나 준비된 명령문을 사용하지 않는 것이 좋습니다. –

관련 문제