gpt4 book ai didi

php - 使用 PHP PDO 更新复选框的数据库值

转载 作者:可可西里 更新时间:2023-11-01 07:58:47 26 4
gpt4 key购买 nike

当用户点击保存时,我试图用复选框的值更新我的数据库。

这是我的代码:

require("config.php");
$settingsArray = array('my_music', 'my_movies', 'my_weather', 'my_maps', 'my_news');
if(isset($_POST['btn_save']))
{
if(isset( $_POST['mysettings']))
{ $values = array();
foreach($_POST['mysettings'] as $selection )
{ if(in_array($selection, $settingsArray))
{ $values[ $selection ] = 1; }
else
{ $values[ $selection ] = 0; }
} // end of foreach.

try // save user selection to the database
{
$user_id = $_SESSION['user']['id'];
$stmt = $db->prepare("UPDATE user_preferences SET my_music = :mymusic, my_movies = :mymovies, my_weather = :myweather, my_maps = :mymaps, my_news = :mynews WHERE user_id = :userID");
$stmt->bindParam(":userID", $userid, PDO::PARAM_INT);
$stmt->bindParam(':mymusic', $values['mymusic']);
$stmt->bindParam(':mymovies', $values['mymovies']);
$stmt->bindParam(':myweather', $values['myweather']);
$stmt->bindParam(':mymaps', $values['mymaps']);
$stmt->bindParam(':mynews', $values['mynews']);
$stmt->execute();
} catch(PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); }
}
else
{ echo 'No checkbox selection made...'; }
} // End of, if statement from the button check

这是我的 HTML:

<form action="admin.php" method="post" role="form">
<input type="checkbox" name="mysettings[]" value="mymusic" <? echo $musicChecked;?> />
<input type="checkbox" name="mysettings[]" value="mymovies" <? echo $movieschecked;?> />
<input type="checkbox" name="mysettings[]" value="myweather" <? echo $weatherChecked;?> />
<input type="checkbox" name="mysettings[]" value="mymaps" <? echo $mapsChecked;?> />
<input type="checkbox" name="mysettings[]" value="mynews" <? echo $newsChecked;?> />
<input type="submit" name="btn-save" class="btn btn-md btn-primary btn-block" data-loading-text="Loading..." value="Save" />
</form>

我没有收到任何错误,所以我不知道哪里出了问题。当我点击保存时,数据库中没有任何更新。

最佳答案

您的提交按钮是(带有连字符)

<input type="submit" name="btn-save"...

但是您的条件语句是(带有下划线)并且基于代码的执行:

if(isset($_POST['btn_save'])){...}

改成

<input type="submit" name="btn_save"...

如果您还没有使用它:

添加$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);连接打开后立即。它会发出代码中发现的任何错误的信号。

此外,并插入到您的开口下方 <?php标签:

error_reporting(E_ALL);
ini_set('display_errors', 1);

加上,确保session_start();确实已加载,因为您正在使用 session 变量; $user_id = $_SESSION['user']['id'];你的WHERE子句依赖于它 --- 只是一个见解。


另一件事要确保,如果是这种情况,user_id列不是 AUTO_INCREMENT

关于php - 使用 PHP PDO 更新复选框的数据库值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25513505/

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