首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用子句插入值?

如何使用子句插入值?
EN

Stack Overflow用户
提问于 2014-10-12 16:48:08
回答 2查看 419关注 0票数 0

下面是HTML表单,它从用户那里获取输入主题&初学者(是的,否)并将其插入数据库

代码语言:javascript
复制
<form action="coursesignup.php" method="post">
    Select Subject:<br>
     <select name="subject">
        <option value="select" selected>select</option>
        <option value="Database Management Systems">Database Management Systems</option>
        <option value="Advanced Microprocessors">Advanced Microprocessors</option>    </select><br><br>
        Are you a Beginner:<br>
        <select name="beginner">
        <option value="select" selected>select</option>
        <option value="yes">yes</option>
        <option value="no">No</option></select><br><br>

        <input type="submit" value="Submit" /></form>

表单将数据提交到以下php文件中。但是,它并不是在相应的userid中插入值,而是将它们放在表的末尾。

代码语言:javascript
复制
<?php

session_start();

if($_SESSION["username"])
$_POST["username"]=$_SESSION["username"];
$user=$_POST["username"];

// Check connection
$con=mysqli_connect("localhost","root","","elearning");

if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// escape variables for security

$subject = mysqli_real_escape_string($con, $_POST['subject']);
$beginner= mysqli_real_escape_string($con, $_POST['beginner']);

$sql=" UPDATE student_info SET subject=$subject AND beginner=$beginner 
       WHERE username=$user " ;



if (!mysqli_query($con,$sql)) {
  die('Error: ' . mysqli_error($con));
}
echo "Successfuly entered";


mysqli_close($con);
?>

它会产生以下错误:

错误: Erreur de syntaxe près de 'Management Systems和;beginner=yes WHERE username=gk4316‘àla ligne 1

EN

回答 2

Stack Overflow用户

发布于 2014-10-12 16:49:53

您的查询有一些错误。

您需要在变量周围使用引号,因为您将这些引号作为字符串传递。

另一个问题是,您需要删除AND并使用逗号。

代码语言:javascript
复制
$sql=" UPDATE student_info SET subject='$subject', beginner='$beginner' 
       WHERE username='$user' " ;

这就是为什么你会收到错误信息。

  • 有关SET的更多信息,请访问:http://www.tutorialspoint.com/mysql/mysql-update-query.htmhttp://dev.mysql.com/doc/refman/5.1/en/set-statement.html

AND是您希望在WHERE子句中使用多个检查的地方。

例如:

代码语言:javascript
复制
`WHERE column_1 = 'something' AND column_2 = 'something else'

西德诺特:

您现在的代码对SQL injection开放。使用prepared statementsPDO with prepared statements,它们会安全得多。

脚注:

我还发现了if($_SESSION["username"])。最好使用isset() if(isset($_SESSION["username"]))并使用适当的括号:

代码语言:javascript
复制
if(isset($_SESSION["username"])){
  $_POST["username"]=$_SESSION["username"];
  $user=$_POST["username"];
}

这只是一个很好的编码实践。

快速教程:

下面是一个使用mysqli和准备好的语句进行更新的示例:

i代表integers代表string

代码语言:javascript
复制
$con = new mysqli('host','user','password','database');
$stmt = $con->prepare("UPDATE `table` SET `title`=?, `description`=?, `price`=?, `location`=?, `email`=?, `date`=? WHERE `id`=?");
$stmt->bind_param("ssisssi", $title_string, $description_string, $price_int, $location_string, $email_string, $date_string, $id_int);
stmt->execute();  
票数 0
EN

Stack Overflow用户

发布于 2015-10-13 11:07:08

删除和,并在sql语句中用逗号替换它。

$sql=“更新student_info SET subject='$subject',初学者=‘$初学者’,其中用户名=‘$user’”;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26327538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档