2014-01-26 4 views
0

Я использую IPN от PayPal, это то, как я отправить данные в PayPal:Php/PDO заявление дает "0"

require_once 'classes/Crypt.php'; 

$crypt = new Crypt(); 
$crypt->Mode = Crypt::MODE_HEX; 
$crypt->Key = '§$TERGERG§$T§34t'; 

$test = array('cmd'=>'_xclick', 
       'business'=>'meine_email', 
       'notify_url'=> 'url_zum_ipn', 
       'item_name'=>'name', 
       'amount'=>'1.00', 
       'currency_code'=>'USD', 
       'lc'=>'US', 
       'custom'=>$crypt->encrypt(serialize(array("username" => $username)))); 

       $url = "https://www.sandbox.paypal.com/cgi-bin/webscr?".http_build_query($test); 
       header("Location:".$url); 
       exit(); 

это, как я обрабатывать данные в моем IPN сценарий:

require_once '../classes/Crypt.php'; 

$crypt = new Crypt(); 
$crypt->Mode = Crypt::MODE_HEX; 
$crypt->Key = '§$TERGERG§$T§34t'; 

$custom = unserialize($crypt->decrypt($_POST["custom"])); 

$username = $custom['username']; 

try 
{ 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $dbh->prepare("INSERT INTO products (product_name) 
            VALUES (?)"); 
    $stmt->bindParam(1, $value1); 

    $value1 = $username; 

    $stmt->execute(); 
} 
catch(PDOException $exception) 
{ 
    $body .= "Error: " . $exception->getMessage() . "\n"; 
} 

Там нет вставки в моей таблице, но это сообщение:

Error: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 
'product_name' cannot be null 

проверить, если переменная $ имя пользователя будет отправить в начале, это! Но когда я проверить переменную $ имя в IPN-скрипт с этим:

if($username == "") { // gives true 

Так кто-нибудь знает, где мой неверный код? Привет!

+0

отформатируйте ваш код –

ответ

0

Заменить

$stmt = $dbh->prepare("INSERT INTO products (product_name) 
           VALUES (?)"); 
$stmt->bindParam(1, $value1); 

$value1 = $username; 

$stmt->execute(); 

С:

$stmt = $dbh->prepare("INSERT INTO products(product_name) VALUES(:productName)"); 
$stmt->execute([':productName' => $username]); 
+0

да, но почему эта часть дает верно? : if ($ username == "") – user3235284

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