Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO检查数据是否存在(如果不创建)_Php_Ajax_Function_Pdo - Fatal编程技术网

Php PDO检查数据是否存在(如果不创建)

Php PDO检查数据是否存在(如果不创建),php,ajax,function,pdo,Php,Ajax,Function,Pdo,所以我想要的是,我想让它检查这个人是否已经使用了这个代码,如果已经使用了,那么它应该死亡,否则从$\u POST['code']设置数据并锁定它,这样它就不能再更改了(但只能通过删除数据库中的数据) 数据库名称=用户 在用户中,我有一个使用代码的结构设置 <?php session_start(); include ('assets/includes/include.php'); if(isset($_POST['code'])) { $SQLCheckExistens = $odb -

所以我想要的是,我想让它检查这个人是否已经使用了这个代码,如果已经使用了,那么它应该死亡,否则从
$\u POST['code']
设置数据并锁定它,这样它就不能再更改了(但只能通过删除数据库中的数据)

数据库名称=用户

在用户中,我有一个使用代码的结构设置

<?php
session_start();
include ('assets/includes/include.php');

if(isset($_POST['code'])) {
$SQLCheckExistens = $odb -> prepare("SELECT COUNT(*) FROM `users` WHERE `code_used` = :code");
$SQLCheckExistens -> execute(array(':code' => $_POST['code']));
$countCodes = $SQLCheckExistens -> fetchColumn(0);

if($countCodes = 0) {
    $SQLRedeemCode = $odb -> prepare("UPDATE `users` SET `code_used` = :code WHERE `steamid` = :SteamID");
    $SQLRedeemCode -> execute(array(':code' => $_POST['code'], ':SteamID' => $_SESSION['steamid']));

    die('Saved successfully!');
} else { 
    die('Error. You have already redeemed a code.'); 
}   
} else {
die();
}
?>

您正试图在if语句中指定一个值,该语句将在您的情况下返回true。应该是:

if($countCodes == 0) { // UPDATE SQL ...
尝试使用MySQL返回的
计数。或者,你可以使用


那么,问题在哪里呢?它不会让我只键入一次,因为您可以通过更改文本框中的代码来编辑它。键入代码后,您不能使用其他代码,因此问题无法解决。我不知道如何创建它。什么错误或什么阻止了你实现这个目标?我不知道,它不会告诉我,因为它只是更新了我数据库中的数据。所以我声明了代码:1234-它接受并写入我的数据库。但当我回到网站时,我尝试输入4534,然后它只是将1234替换为4534,这是不可能的,因为它应该只能声明一次。但它仍然不断更改值,当我输入新的“兑换代码”时,
$countCodes
返回什么@MikkelBertelsenIt还不起作用$如果没有数据,countCodes应该返回=插入您键入的已赎回代码-如果它找到数据,那么它应该只显示消息:您已经赎回了代码。不要更新它。@MikkelBertelsen代码就像你说的那样。如果$countCodes=0(找到0条记录),则更新,否则出错
function getCode($UserID, $odb)
{
    $SQLUserInfo = $odb -> prepare("SELECT * FROM `users` WHERE `steamid` = :SteamID");
    $SQLUserInfo -> execute(array(':SteamID' => $UserID));
    $UserInfo = $SQLUserInfo->fetch(PDO::FETCH_ASSOC);

    return $UserInfo['code_used'];
}
if($countCodes == 0) { // UPDATE SQL ...
$SQLCheckExistens = $odb -> prepare("SELECT COUNT(*) FROM `users` WHERE `code_used` = :code");
$SQLCheckExistens -> execute(array(':code' => $_POST['code']));
$result = $SQLCheckExistens -> fetch(PDO::FETCH_NUM);
$countCodes = $result[0];