簡體   English   中英

無法在兩個表中存儲數據

[英]Can not store data in two tables

我試圖使用兩個不同的查詢將數據存儲在兩個表中。

其中一個可以正常工作,但是另一個沒有節省任何東西。 這兩個查詢是整頁腳本的一部分。 在這兩種情況下,第一個查詢都是腳本的一部分,並且工作正常。 第二個查詢由我編寫,以記錄用戶點擊。

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 " ;

?>

錯誤:

警告:mysqli_real_escape_string()恰好需要2個參數,第3行的./xxxx/daata.php中給出1個參數bool(true)

請指導。

這是有效的查詢:

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

注意:對於SQL查詢中的字符串,請始終使用mysqli_real_escape_string(或其等效項)。 否則您的應用程序將很快被SQL注入所入侵。

您確定表名“ actcontest”嗎? 在第一種情況下,您要在其下划線,而不是在第二種情況下。 您是否也確定該表模式:userid,類型,點和日期? 也許你打錯了字? 如果我是你,我將首先檢查所有這些。

警告:mysqli_real_escape_string()恰好需要2個參數,第3行的./xxxx/daata.php中給出1個參數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(E_ALL);
ini_set('display_errors', 1);

$username或任何其他變量應該未定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM