gpt4 book ai didi

php - 尝试修复从 MYSQL 收到的错误时遇到问题

转载 作者:行者123 更新时间:2023-11-29 18:49:53 25 4
gpt4 key购买 nike

这是我的 PHP 代码,它导致了这个错误,我以前没有遇到过这个错误,我在发布之前进行了搜索和查看,但找不到解决该错误的方法。

PHP(正在运行的 PHP):

   <?php 
require('includes/config.php');
$username = $_SESSION['username'];

if($_POST['username'] != $_SESSION['user']['username'])
{
// Define our query parameter values
$query_params = array(
':username' => $_POST['username']
);

$stmt = $db->prepare("SELECT username FROM members WHERE username = :username");
$stmt->execute($query_params);

// Retrieve results (if any)
if($stmt->rowCount() > 0)
{
die("This username is already in use");
}

try
{
$query_params = array(
':username' => $_POST['username'],
':last_username' => $username
);

// Execute the query
$stmt = $db->prepare("UPDATE members SET username = :username WHERE username = :last_username");
$result = $stmt->execute($query_params);
}
catch(PDOException $ex)
{
// Note: On a production website, you should not output $ex->getMessage().
// It may provide an attacker with helpful information about your code.
die("Failed to run query: " . $ex->getMessage());
}
}

?>

HTML:

                               <div id="changeusername" class="tab-pane">
<h3> Change Your Username : </h3>
<form method="post" action="changeusername.php" autocomplete="off">
<input type="text" name="username" id="username" class="form-control" placeholder="New Username" autofocus value="<?php if(isset($error)){ echo $_POST['username']; } ?>" tabindex="1">
<br>
<input type="password" name="password" id="password" class="form-control" placeholder="Confirm Your Password">
<br>
<button class="btn btn-theme btn-block" name="submit" type="submit"><i class="fa fa-lock"></i> Change Username</button>


</form>

当我输入 Boom2(新用户名)和oom1(旧用户名)后,我接收错误:无法运行查询:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行 ''boom2' WHERE username = 'boom1'' 附近使用的正确语法

最佳答案

如果用户名存在,我会重写您的 php 代码以出错,并更正您的更新查询。请尝试一下:

<?php 
require('includes/config.php');
$username = $_SESSION['username'];

if($_POST['username'] != $_SESSION['user']['username'])
{
// Define our query parameter values
$query_params = array(
':username' => $_POST['username']
);

$stmt = $db->prepare("SELECT username FROM members WHERE username = :username");
$stmt->execute($query_params);

// Retrieve results (if any)
if($stmt->rowCount() > 0)
{
die("This username is already in use");
}

try
{
$query_params = array(
':username' => $_POST['username'],
':last_username' => $username
);

// Execute the query
$stmt = $db->prepare("UPDATE members SET username = :username WHERE username = :last_username");
$result = $stmt->execute($query_params);
}
catch(PDOException $ex)
{
// Note: On a production website, you should not output $ex->getMessage().
// It may provide an attacker with helpful information about your code.
die("Failed to run query: " . $ex->getMessage());
}

}

?>

关于php - 尝试修复从 MYSQL 收到的错误时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44403393/

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