首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP和mySQL不工作

问PHP和mySQL不工作
EN

Stack Overflow用户
提问于 2014-03-25 01:53:06
回答 5查看 111关注 0票数 0

PHP代码:

代码语言:javascript
复制
<?php 
// Create connection
$con=mysqli_connect("localhost","root","root","demo1");
echo "Connection was successful";

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

mysql_select_db("demo1",$con);

$sqli="INSERT INTO employee (Employee ID,NAME,Date Hired,Position,Salary,Department Code,Can HIRE,BOSSID)

          VALUES('$_POST[EMPID]','$_POST[NAME]','$_POST[DATEHIRED]','$_POST[POSITION]','$_POST[SALARY]','$_POST[D    EPTCODE]','$_POST[CANHIRE]','$_POST[BOSSID]')";

if (!mysqli_query($con,$sqli))
  {
  die('Error: ' . mysqli_error($con));
  }
echo "1 record added";

mysqli_close($con);

?>

HTML代码

代码语言:javascript
复制
<!DOCTYPE html>
<html>
  <body>
    <h1> EMPLOYEE </h1><br>
    <form action="LAB5.php" method="post">
      Employee ID: &nbsp;<input type="text" name="EMPID" ><br>
      NAME: <input type="text" name="NAME" ><br>
      Date Hired &nbsp;<input type="text" name="DATEHIRED" ><br>
      Position: <input type="text" name="POSITION" ><br>
      Salary: &nbsp;<input type="text" name="SALARY" ><br>
      Department Code: <input type="text" name="DEPTCODE" ><br>
      Can HIRE &nbsp;<input type="text" name="CANHIRE" ><br>
      BOSSID: <input type="text" name="BOSSID" ><br>
      <input type="image" src="Submit.gif" alt="Submit" width="100" height="50"><br>
 </body>
</html> 

错误消息:

连接是successfulError:您的SQL语法有错误;请检查与MySQL服务器版本相对应的手册,以获得在第1行使用“ID、名称、雇用日期、职位、薪资、部门代码、可以雇用、BOSSID)值”的正确语法。

桌面截图:http://tinypic.com/r/vni4bc/8

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-03-25 02:00:08

您已经将代码与MySQL和MySQLi混合使用。我只将您的代码写入MySQLi中。请避免在列名中使用(空格)。并且可以使用mysqli_real_escape_string防止某些SQL注入。

LAB5.php:

代码语言:javascript
复制
<?php

/* CHECK CONNECTION */

$connection=mysqli_connect("localhost","root","root","demo1");

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

$empID=mysqli_real_escape_string($connection,$_POST['EMPID']);
$name=mysqli_real_escape_string($connection,$_POST['NAME']);
$datehired=mysqli_real_escape_string($connection,$_POST['DATEHIRED']);
$position=mysqli_real_escape_string($connection,$_POST['POSITION']);
$salary=mysqli_real_escape_string($connection,$_POST['SALARY']);
$deptcode=mysqli_real_escape_string($connection,$_POST['DEPTCODE']);
$canhire=mysqli_real_escape_string($connection,$_POST['CANHIRE']);
$bossID=mysqli_real_escape_string($connection,$_POST['BOSSID']);

/* MYSQLI REAL ESCAPE STRING WOULD PREVENT A BIT OF SQL INJECTION */

mysqli_query($connection,"INSERT INTO employee (EMPID, NAME, DATEHIRED, POSITION, SALARY, DEPTCODE, CANHIRE, BOSSID) /* DOUBLE CHECK YOUR COLUMN NAME */
VALUES('$empID','$name','$datehired','$position','$salary','$deptcode','$canhire','$bossid')";

mysqli_close($con);

?>

您的HTML代码:

代码语言:javascript
复制
<html>
<body>

<h1> EMPLOYEE </h1><br>
<form action="LAB5.php" method="post">
Employee ID: &nbsp;<input type="text" name="EMPID" ><br>
Name: <input type="text" name="NAME" ><br>
Date Hired &nbsp;<input type="date" name="DATEHIRED" ><br>
Position: <input type="text" name="POSITION" ><br>
Salary: &nbsp;<input type="number" name="SALARY" ><br>
Department Code: <input type="text" name="DEPTCODE" ><br>
Can HIRE &nbsp;<input type="text" name="CANHIRE" ><br>
BOSSID: <input type="text" name="BOSSID" ><br>
<input type='submit'>
</form>

</body>
</html> 
票数 0
EN

Stack Overflow用户

发布于 2014-03-25 01:58:20

字段不能有像Employee ID这样的空格,请重复检查db表列名。

此外,您的代码容易受到SQL注入的影响。您应该转义要在SQL查询中使用的任何用户输入。尝试将mysql_escape_string($_POST['value'])封装在所有$_POST、$_GET和$_REQUEST输入周围。

票数 2
EN

Stack Overflow用户

发布于 2014-03-25 01:58:25

使用mysqli为什么是"mysql_select_db"?mysqli将是:

代码语言:javascript
复制
  bool mysqli_select_db ( mysqli $link , string $dbname )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22624052

复制
相关文章

相似问题

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