如何解决MySQL的入门问题?

时间:2017-02-02 10:44:40

标签: php mysql

我试过这个php代码:

echo $_SESSION['user_id']."<br />\n";
$sql = "UPDATE user_passwords SET status ='off' WHERE users_id = 'user_id'";
if ($conn->query($sql) === TRUE) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . $conn->error;
}

输出html通知:

161 // Nr. user from users
Record updated successfully

但在MySQL中没有记录.... 当我像这样修改php时:

echo $_SESSION['user_id']."<br />\n";
$sql = "UPDATE user_passwords SET status ='off' WHERE users_id ='161'";
if ($conn->query($sql) === TRUE) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . $conn->error;
}

输出html通知:

161 // Nr. user from users
Record updated successfully

并且在MySQL中都没问题。

哪里可能出错?

4 个答案:

答案 0 :(得分:1)

$ sql =“UPDATE user_passwords SET status ='off'WHERERE users_id =' user_id '”;

在第一次尝试中,您尝试使用字符串'user_id'作为用户的ID。 您应该使用$_SESSION['user_id']代替或定义php变量:

$user_id = $_SESSION['user_id'];

然后您可以使用,但使用'$'前缀$user_id

另外:当您期望变量为整数时,不应在SQL中使用撇号。 Plus2:处理$ _SESSION,$ _GET和$ _POST变量时应该使用 mysqli_real_escape_string

答案 1 :(得分:1)

你的错误在WHERE users_id = 'user_id'";

它应该是您的会话变量user_id

<?php

echo $_SESSION['user_id']."<br />\n";

$sql = "UPDATE user_passwords SET status ='off' WHERE users_id = '".$_SESSION['user_id']."'";
if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}

?>

注意:使用准备好的陈述。防止sql注入。

答案 2 :(得分:0)

你在sql string中错误地传递变量,

public static List<Quote> getCustomerQuotes(QuoteFilter filter)
    {
        using (var db = new AppDBContext())
        {
            var q = db.Quotes.Where(u => 

            (filter.type != null ? u.quoteType == filter.type : u.quoteType > 0) &&

            (filter.only_permitable != null ? !Values.NON_PERMITABLE_QUOTES.Contains(u.quoteType) : u.permitType > 0) &&

            (filter.quote_status != null ? u.quote_status == filter.quote_status : u.quote_status > -100) && 

            (!string.IsNullOrEmpty(filter.quotenumber) ? u.quote_number.Contains(filter.quotenumber) || u.groupName.Contains(filter.quotenumber) : u.quoteType > 0) &&

            (!string.IsNullOrEmpty(filter.permitnumber) ? u.permit_number.Contains(filter.permitnumber) || u.groupName.Contains(filter.permitnumber) : u.quoteType > 0) &&

            (filter.permit_status != null ? u.permit_status == filter.permit_status : u.quoteType > 0) &&

            (filter.quoteId != null ? u.Id == filter.quoteId : u.Id > 0) &&

            (filter.customer_id != null ? u.customer_id == filter.customer_id : u.customer_id > -1)

            ).OrderByDescending(u => u.Id);


            //FileLogger.Log("getCustomerQuotes", q.ToString());
            return q.ToList();
        }
    }

在上面的字符串中,您没有带变量名的$符号,但找不到您应该使用的正确用户ID。

$sql = "UPDATE user_passwords SET status ='off' WHERE users_id = 'user_id'";
                                                                  ^

答案 3 :(得分:0)

在您的更新查询中,'user_id'的行为类似于,而不是包含会话用户ID的变量。这就是它无法正常工作的原因。

试试这个

$user_id = $_SESSION['user_id'];
$sql = "UPDATE user_passwords SET status ='off' WHERE users_id = '$user_id'";
if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}