gpt4 book ai didi

php - 为什么这些简单的更新和插入 sql 函数不能与我的 php 查询正常工作?

转载 作者:行者123 更新时间:2023-11-29 08:37:28 24 4
gpt4 key购买 nike

我正在开发一个自定义 joomla 组件,它只是将一个点表添加到具有两个字段(id,点)的数据库中... id 是主键,我试图将其设置为与用户相同joomla 用户 ID...

我需要一个函数返回用户的点数,另一个函数将用户点数更新为给定值...我成功创建了第一个函数:

getUserPoints()

它返回给定用户的点数...然后我启动了第二个更新函数,名为:

updateUserPoints()

这是目前“不一致”的部分,我认为我错了...我只是想制作一个简单的函数来更新当前用户的积分值...而且我试图处理如果没有记录的情况...然后创建一个!...我通过在 updateUserPoints() 函数中创建一个名为的函数来做到这一点:

newUserCheck()

它应该检查用户是否有积分,然后回复 true 或 false:

$db->setQuery("SELECT points FROM #__mytable WHERE id = '".$user->id."'");
$db->query();
$points = $db->loadResult();
if($points){
return false;
} else {
return true;
}

然后要么更新创建一条新记录,要么更新现有记录...这段代码几乎可以工作了!...它在三个测试中对我有用...但是当我添加第二个用户时,它似乎变得有点不一致...它将成功创建一个新用户并给他们 5 分...然后当我再次运行它来更新时它会显示“已更新点”但它似乎并没有实际更新数据库中的点值? !

对于一个或没有现有用户,它似乎工作正常!无论如何...接受建议...我确信我在这里做错了很多,但我想让它正常工作!正如您所见,我是 MVC 编程新手:P

这是完整的 joomla Controller :

<?php defined('_JEXEC') or die('');
// userprofilepoints CONTROLLER

jimport('joomla.application.component.controller');
jimport('joomla.user.helper');

class userprofilepointsController extends JController {

function getUserPoints(){

$values = JRequest::get("post");
$userIdNumber = $values['userIdNumber'];
$user = & JFactory::getUser();

$db = JFactory::getDBO();
$db->setQuery("SELECT points FROM #__mytable WHERE id = '".$user->id."'");
$db->query();
$points = $db->loadResult();

echo $points;
}

function updateUserPoints(){

function newUserCheck(){

$values = JRequest::get("post");
$userIdNumber = $values['userIdNumber'];
$user = & JFactory::getUser();
$db = JFactory::getDBO();
$db->setQuery("SELECT points FROM #__mytable WHERE id = '".$user->id."'");
$db->query();
$points = $db->loadResult();

if($points){
return false;
} else {
return true;
}
}

if(newUserCheck() == false){

$values = JRequest::get("post");
$userIdNumber = $values['userIdNumber'];
$newPointsAmount = $values['newPointsAmount'];
$user = & JFactory::getUser();
$db = JFactory::getDBO();
$db->setQuery("UPDATE #__mytable SET points = '".$newPointsAmount."' WHERE id = '".$user->id."'");
$db->query();

//echo getUserPoints();
//$points = $db->loadResult();
echo "Points Updated";

} else if(newUserCheck() == true) {

$values = JRequest::get("post");
$userIdNumber = $values['userIdNumber'];
$user = & JFactory::getUser();
$db = JFactory::getDBO();
$db->setQuery("INSERT INTO #__mytable SET id = $user->id, points = 5");
$db->query();

echo "New User Created!";

}

}
}

最后是我的 html 和 javascript View !....谢谢!!! :)

<?php defined('_JEXEC') or die(); 

// MAIN PAGE TEMPLATE
jimport('joomla.user.helper');
$user = & JFactory::getUser();
$profile = JUserHelper::getProfile($user->id);
?>

<script type="text/javascript">
jQuery(document).ready(function($) {

$('#updateBTN').click(function(){

updateUserPoints();
});


function getUserPoints(){

//Post the following to the controller
$.post('http://www.mysite.com/index.php?format=raw&option=com_userprofilepoints&task=getUserPoints', {

userIdNumber: <?php echo $user->id; ?>

}, function(data) {

alert(data);

});
}

function updateUserPoints(){

//Post the following to the controller
$.post('http://www.mysite.com/index.php?format=raw&option=com_userprofilepoints&task=updateUserPoints', {

userIdNumber: <?php echo $user->id; ?>,
newPointsAmount: 555444 //random hardcoded points amount to test with

}, function(data) {

alert(data);

});
}

});

</script>

<div id="main_block">
<p>Points Page:</p>
<br />
<button id="updateBTN">Trigger Update</button>
</div>

最佳答案

newUserCheck() 中删除查询行

$db->setQuery("SELECT points FROM #__mytable WHERE id = '".$user->id."'");
$db->query();
$points = $db->loadResult();

实际上应该是:

$db->setQuery("SELECT points FROM #__mytable WHERE id = '".$user->id."'");
$points = $db->loadResult();

loadResult() 将运行查询。

关于php - 为什么这些简单的更新和插入 sql 函数不能与我的 php 查询正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14865092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com