2014-10-29 75 views
-2

值我有一点与脚本我正在写一个问题。更新MySQL的布尔(TINYINT)从PHP

$sql ="UPDATE users SET adagio = 1 WHERE username = '$_SESSION[username]'"; 

这里的主要问题是,虽然我已经测试了

  1. 的这部分代码将运行

  2. 我已经成功地连接到正确的服务器

3)$_SESSION[username]给我正确的用户名, 运行代码时数据库未更新。慢板是一个布尔值(当然,一个tinybit,真的),我已经上传的数据库在这里我的phpMyAdmin的屏幕:

http://imgur.com/HUFdx0p

我不完全知道为什么它不工作,尽管我在网上搜索并发现了类似的线程,但在任何为我工作的线程中都没有修复。我想知道你们中的一个人是否可以看到我在这里做错了什么?

编辑额外的:

if(($_POST['adagio']) == 1){ 
$sql ="UPDATE users SET adagio = 1 WHERE username = '$_SESSION[username]'"; 
} 
+0

; * mysql *,* mysqli *或* PDO *?你可以展示更多关于你如何执行查询的代码吗? – Phil 2014-10-29 23:48:38

+0

@Phil我正在使用mysql 5.1。我用更多的代码更新了原文。 (它很短,现在就是这样,除了我的代码连接到数据库和session_start)基本上,我得到一个复选框(0或1)的结果,然后,如果它是一个,启用慢板数据库。 – nanobots 2014-10-29 23:57:45

+2

请再次阅读我的问题,**仔细**。你如何执行查询?将会有一行代码**执行** $ sql中的查询。 **显示该行** – Phil 2014-10-30 00:04:33

回答

2

$_SESSION[username]几乎可以肯定是一个字符串,因此它必须在引号:

$sql ="UPDATE users SET adagio = 1 WHERE username = '$_SESSION[username]'"; 

仅供参考,MySQL的会很乐意告诉你的SQL错误,如果你检查他们。你应该在你正在使用的任何MySQL库中使用适当的错误报告功能。

+1

为什么这个答案得到downvotes? – 2014-10-29 23:41:01

+0

@castis这里是相关的手册条目 - http://php.net/manual/language.types.string.php#example-93。查看* koolaid1 *部分 – Phil 2014-10-29 23:42:43

+1

1,因为*'你的建议'* – Darren 2014-10-29 23:46:37

0

你可以试试这个。

if (1 == $_POST['adagio']) { 
    $sql = sprintf ("UPDATE users SET adagio = 1 WHERE username = '%s'", mysql_escape_string($_SESSION['username'])); 
} 
您正在使用什么数据库扩展
+0

小心解释这是如何解决他们的问题? – 2014-10-30 23:26:04

+0

尽管您似乎担心SQL语法,但我的观点是,'$ _POST ['adagio']'没有得到适当的价值。SQL语法对我来说似乎很好。你可以手动尝试从SQL命令行或类似phpmyadmin。你正在检查$ _POST ['adagio']是否有值,然后更新表中的行。我认为应该是$ _POST ['adagio']是1,然后更新表中的行。 – cupid 2014-10-31 07:56:35