2014-10-12 2 views
0

Я пытаюсь хранить данные в двух таблицах, используя два разных запроса.Не удается сохранить данные в двух таблицах

один из них работает нормально, но другой ничего не спасает. Эти два запроса являются частью полного сценария страницы. Запросы frist в обоих случаях являются частью сценариев и работают нормально. 2-й запрос написан мной, чтобы сделать еще одну запись пользовательских кликов.

Таблица структура actcontest .. имя таблицы actcontest не act_contest, это было копировать/вставить здесь ошибка: [исправлено]

 
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:
Это сообщение об отказе от одного поставщика.

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

После Var отвала:

сохраняется в отдельном файле.

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)

Это предупреждение означает, что вам необходимо передать ваше соединение с БД, то есть второй параметр, который он ожидает.

('".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"? В первом случае вы помещаете в него символ подчеркивания, а не второй. Вы также уверены в этой схеме таблицы: идентификатор пользователя, тип, точки и дата? Может, ты сделал опечатку? Если бы я был вами, я сначала проверю все это.

+0

Я все проверил. и это экономит ведение данных хорошо, если запрос запущен. то есть на стороне страницы сценария –

+0

В первом запросе вы обертываете свой запрос простыми кавычками, а также используете в нем простые кавычки, не избегая их. Это не сработало. И каково название таблицы, которую вы хотите обновить? Это actcontest или act_contest? –

+0

Я обновил вопрос, с деталями –

Смежные вопросы