2014-10-12 3 views
0

두 개의 다른 쿼리를 사용하여 두 테이블에 데이터를 저장하려고합니다.두 테이블에 데이터를 저장할 수 없습니다.

그 중 하나는 정상적으로 작동하지만 다른 하나는 아무 것도 저장하지 않습니다. 이 두 쿼리는 전체 페이지 스크립트의 일부입니다. 두 경우의 프리스트 쿼리는 스크립트의 일부이며 정상적으로 작동합니다. 두 번째 쿼리는 사용자 클릭에 대한 다른 레코드를 만들기 위해 작성되었습니다.

테이블 구조 actcontest위한 .. 테이블 이름이 있었다하지 act_contest actcontest 여기 복사/붙여 넣기 실수 [보정]

 
userid varchar(50) 
type varchar(50) 
points int(10) 
date date 

사례 1 :

작업 쿼리

$sql = $Db1->query('Insert into ptcwalllogs (userid, user_earned) 
values ('.$credituser.','.$rate.')'); 

쿼리 관련 문제 :

$sqlact = $Db1->query('Insert into actcontest (userid, type, points, date) 
values ('$username','ptcwall',6,now())'); 

사례 2 :
작업 쿼리 : 쿼리와

$Db1->query("INSERT INTO `likesasapaddon` (user_id, page_id,date) 
VALUES('{$thismemberinfo[userid]}', '{$get['pageid']}',NOW())"); 

문제 : 같은 테이블에 값을 저장할 경우 모두

$Db1->query("INSERT INTO `actcontest` (userid, type, points, date) 
VALUES ('$username','facebook',6,now())"); 

.

다음은 사례 1의 스크립트 파일입니다.
이것은 제공자 중 하나의 게시물입니다. var에 덤프 후

<?php 
$date1 = date('Y-m-d'); 
include("config.php"); 
include("includes/mysql.php"); 
$Db1 = new DB_sql; 
$Db1->connect($DBHost, $DBDatabase, $DBUser, $DBPassword); 

$your_pwd = ""; /* Postback Password */ 
$vip=getenv('REMOTE_ADDR'); 

$sent_pw = $_GET['pwd']; 
$credited = intval($_GET['c']); 
$credituser = intval($_GET['usr']); 
$rate = trim($_GET['r']); 
$type = intval($_GET['t']); 
$allowed_ip = array('72.52.253.202');//PTCWall's IPS. 


if(in_array($vip, $allowed_ip) && $sent_pw == $your_pwd) 
{ 
    if($credited == '1') 
    { 
     if($type == '1') 
     { 
      $run = $Db1->query('UPDATE user SET balance=balance+'.$rate.' WHERE userid = '.$credituser); 
// This line below is used to store clicks locally 
     $sql = $Db1->query('Insert into ptcwalllogs (userid, user_earned) values ('.$credituser.','.$rate.')'); 
$sqlact = $Db1->query("Insert into actcontest (userid, type, points, date) 
values ('".mysqli_real_escape_string($username)."','ptcwall',6,now())"); 
// $sqlact = $Db1->query('Insert into actcontest (userid, type, points, date) values ("lorry","ptcwall",6,now())'); 
      if($run) 
      { 
       exit('ok'); 
      } else{ 
       exit('issue'); 
      } 


     }elseif($type == '2'){ 

      $run = $Db1->query('UPDATE user SET points=points+'.$rate.' WHERE userid = '.$credituser); 
      if($run) 
      { 
       exit('ok'); 
      } else{ 
       exit('issue'); 
      } 
     } 

    }elseif($credited == '2') 
    { 
     if($type == '1') 
     { 
      $run = $Db1->query('UPDATE user SET balance=balance-'.$rate.' WHERE userid = '.$credituser); 
      if($run) 
      { 
       exit('ok'); 
      } else{ 
       exit('issue'); 
      } 
     }elseif($type == '2'){ 

      $run = $Db1->query('UPDATE user SET points=points-'.$rate.' WHERE userid = '.$credituser); 
      if($run) 
      { 
       exit('ok'); 
      } else{ 
       exit('issue'); 
      } 
     } 
    } 
} 
else{ 
    die(); 
} 
//FILE 03302014 
?> 

: 별도의 파일에 저장

.

daata.php

<?php 
$sqlact = $Db1->query("Insert into actcontest (userid, type, points, date) 
values ('".mysqli_real_escape_string($username)."','ptcwall',6,now())"); 
var_dump($sqlact); 
echo " success asdasdasdasdasdasdasdasdas " ; 

?> 

오류 :

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in ./xxxx/daata.php on line 3 bool(true)


친절하게 안내합니다.

+0

"저장하지 않음"이란 무엇을 의미합니까? 오류 메시지가 생성됩니까? – maja

+0

query1과 query2 그리고 서로 옆에 씁니다. 첫 번째는 데이터를 로컬에 성공적으로 저장하지만 두 번째 것은 아무 것도하지 않습니다. 오류 없음. 아무 것도 저장되지 않습니다. –

답변

0

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in ./xxxx/daata.php on line 3 bool(true)

이 경고는 예상되는 두 번째 매개 변수 인 DB 연결을 전달해야한다는 것을 의미합니다.

('".mysqli_real_escape_string($Db1, $username)."','ptcwall',6,now())") 

문서를 참조하십시오 : 만들기, 또한


$sqlact = $Db1->query("Insert into act_contest (userid, type, points, date) 
values ('".mysqli_real_escape_string($Db1, $username)."','ptcwall',6,now())"); 

$Db1->query("INSERT INTO `actcontest` (userid, type, points, date) 
VALUES ('".mysqli_real_escape_string($Db1, $username)."','facebook',6,now())"); 

을 확인하십시오 모든 열 당신의 테이블에 존재합니다.

추가 :

die('There was an error running the query [' . $Db1->error . ']'); 

이 오류 신호를 보낸다는 어떤이 있어야한다.

즉 :

if($run) 
{ 
    exit('ok'); 
} else{ 
    die('There was an error running the query [' . $Db1->error . ']'); 
} 
  • 는 모든 쿼리에 대해 동일한 방법을 따르십시오.

또한 생산 테스트 중에 도움이 될 것 파일 (들)의 상단에 error reporting를 추가하는 좋은 일입니다.

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

$username이거나 다른 변수는 정의되지 않아야합니다.

0

여기에 작업하는 쿼리 :

$sqlact = $Db1->query("Insert into act_contest (userid, type, points, date) 
values ('".mysqli_real_escape_string($username)."','ptcwall',6,now())"); 

$Db1->query("INSERT INTO `actcontest` (userid, type, points, date) 
VALUES ('".mysqli_real_escape_string($username)."','facebook',6,now())"); 

NB : 항상 사용 mysqli_real_escape_string (또는 동급) SQL 쿼리 문자열. 또는 응용 프로그램이 곧 SQL 주입으로 해킹 될 것입니다.

+0

도 작동하지 않습니다.이 쿼리도 아무 것도 저장하지 않습니다. –

0

테이블 이름이 "actcontest"입니까? 첫 번째 경우에는 두 번째 경우가 아니라 그 안에 밑줄을 넣습니다. 이 테이블 스키마에도 사용자 ID, 유형, 포인트 및 날짜가 맞습니까? 어쩌면 당신은 약간의 오타를 만들었 을까요? 내가 너라면, 먼저 그걸 모두 확인해 보겠다.

+0

모든 것을 확인했습니다. 쿼리가 spate로 실행되면 데이터 큐를 잘 저장합니다. 즉, 스크립트 페이지의 바깥 쪽 –

+0

첫 번째 쿼리에서는 간단한 따옴표로 쿼리를 래핑하고 이스케이프 처리하지 않고 간단한 따옴표를 사용합니다. 이것은 작동하지 않을 수 있습니다. 그리고 업데이트하려는 테이블의 이름은 무엇입니까? actcontest 또는 act_contest입니까? –

+0

나는 세부 사항을 가진 질문을 새롭게했다 –

관련 문제