无法使 PHP 更新功能正常工作
Posted
技术标签:
【中文标题】无法使 PHP 更新功能正常工作【英文标题】:Cannot get a PHP update function to work 【发布时间】:2013-04-08 03:36:39 【问题描述】:您好,我正在使用 html 和 php 来更新数据库表中的变量,我已确保 html 表单正常工作,并已使用回显来确保脚本正在运行。它没有给我任何错误迹象,但不会更新表格。为了澄清我的 html 代码工作正常,因为函数正在工作并且所有正确的回声都出来了。这是我希望有人能告诉我哪里出错的代码。谢谢!
<?php
session_start();
$healthyPig = 50;
$userNamer = $_SESSION['rememberMe'];
echo $userNamer;
$connect=(mysql_connect("localhost","lpwd10","lpwd10","lpwd10_proj"));
if (mysql_error())
echo "Failed to connect";
echo "connected SON";
mysql_query($connect,"UPDATE user SET 'pigHealth' = $healthyPig WHERE userName='$userNamer'");
header('Location: pigManager.php');
echo "Complete";
mysql_close($con);
?>
【问题讨论】:
尝试mysql_query(...) or die(mysql_error());
查看输出错误。
您的 SET 'pigHealth' = 至少是不正确的。省略单引号,或使用反引号。我建议将其更改为 SET pigHealth = $healthyPig ...
表中是否存在用户名正确的用户?也许您需要使用mysql_select_db()
选择正确的数据库?
您对 SQL 注入敞开了大门。请了解如何使用参数化查询(最好使用 PDO 模块)来保护您的 Web 应用程序。 bobby-tables.com/php 有一些示例可以帮助您入门。
一旦完成,请告诉我网站的网址,我很想对其进行 sql-inject。我在开玩笑,但说真的,你的代码很简单,看看这个:***.com/questions/16023217/…我 cba 在这里重写它。
【参考方案1】:
值应该用引号引起来,而不是列名
"UPDATE user SET pigHealth = '$healthyPig' WHERE userName='$userNamer'"
【讨论】:
嗨,我已经修复了我的语法,但它仍然无法正常工作。用户名取自会话变量并使用回声确保将其传递到脚本中。我暂时不担心sql注入,以后会解决的。【参考方案2】:我认为您混淆了 mysql_
和 mysqli_
扩展名。
使用mysql_
扩展你的query()
语句是错误的
mysql_query($connect,"UPDATE user SET 'pigHealth' = $healthyPig WHERE userName='$userNamer'");
应该是
mysql_query("UPDATE user SET 'pigHealth' = $healthyPig WHERE userName='$userNamer'", $connect);
但是您不应该再使用
mysql_
扩展,它已被弃用多年,并已从 PHP7 中完全删除,因此您使用它编写的任何代码都不会在 PHP7 上运行。特别是如果您只是学习 PHP,请花精力学习
PDO
数据库扩展。 Start here
【讨论】:
以上是关于无法使 PHP 更新功能正常工作的主要内容,如果未能解决你的问题,请参考以下文章