无法使用php将数据插入mysql数据库中的现有表

无法使用php将数据插入mysql数据库中的现有表,php,html,mysql,sql-insert,Php,Html,Mysql,Sql Insert,我收到一条消息,新记录已创建,但当我重新加载phpmyadmin时,表是相同的。我还从同一数据库中检索了信息, 从同一个表中,使用SELECT命令,因此连接工作..(简单地说)。我不知道为什么没有更新。请帮忙。先谢谢你 <html> <head> </head> <body> <?php define('DB_NAME', 'appointments'); define('DB_USER', 'root'); define('DB_PASS

我收到一条消息,新记录已创建,但当我重新加载phpmyadmin时,表是相同的。我还从同一数据库中检索了信息, 从同一个表中,使用SELECT命令,因此连接工作..(简单地说)。我不知道为什么没有更新。请帮忙。先谢谢你

<html>
<head>
</head>
<body>
<?php 
define('DB_NAME', 'appointments');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

if (!$link) {
    die('Could not connect: ' . mysql_error());
}
$hos=$_POST['hos'];
echo $hos;
echo "<br/>";
$doc=$_POST['doc'];
echo $doc;
$date=$_POST['fdate'];
echo $date;
$time=$_POST['time'];
echo $time;
$pat=5;
echo $pat;
$sql = "INSERT INTO rantevou ('app_id','patient_id','date','time','hos','doc') VALUES ('4','$pat','$date','$time','$hos','$doc');";
if ($sql) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
mysqli_close($link);
?>
</body>
</html>

而不是

"INSERT INTO rantevou ('app_id','patient_id','date','time','hos','doc') VALUES ('4','$pat','$date','$time','$hos','$doc');"
取消列的引号

"INSERT INTO rantevou (app_id, patient_id, date, time, hos, doc) VALUES ('4','$pat','$date','$time','$hos','$doc');"
或者使用反勾号

"INSERT INTO rantevou (`app_id`, `patient_id`, `date`, `time`, `hos`, `doc`) VALUES ('4','$pat','$date','$time','$hos','$doc');"
您忘记执行查询了

mysqli_execute($con, "INSERT INTO rantevou (`app_id`, `patient_id`, `date`, `time`, `hos`, `doc`) VALUES ('4','$pat','$date','$time','$hos','$doc')");

您忘记执行查询,
if($sql){
只计算变量

if (mysqli_query($link, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

首先,列名不要使用单引号,要么不使用任何内容,要么使用反勾号。
其次,您忘记执行查询。
另外,使用OOP更好

请尝试:

$mysqli = new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);


编辑:鲁伟奇说的:声明尚未执行

看起来你知道你在做什么。你确定这里的参数:

$sql = "INSERT INTO rantevou (**'app_id','patient_id','date','time','hos','doc'**) VALUES ('4','$pat','$date','$time','$hos','$doc');";
if ($sql) {
是否与数据库中的列标题完全匹配

检查语句的另一个好方法是转到phpmyadmin,转到SQL记事本,输入具有相同结构的查询,然后查看返回的内容

您的查询可能会返回一条消息,但有一条消息说它失败了……这仍然会触发您的
回显“新记录创建成功”;

以下是我最近插入DB的结构:

<?php
// to get data from android app

$gardenID=$_POST["gardenID"];
$vID=$_POST["vID"];
$quantity = $_POST["quantity"];
$timePlanted = date("Y/m/d");

// establishes connection to database
require "init.php";
    echo "here";
    echo $timePlanted;
    echo $quantity;

$query = "insert into garden_veg (gardenID, vID, quantity, timePlanted) values ('".$gardenID."','".$vID."',
                                        '".$quantity."', '".$timePlanted."' );";

$result = mysqli_query($con,$query);
            $response = array();
            $code = "addItem_success"; //changed code
            $message = "Item(s) added!";
            array_push($response,array("code" => $code, "message"=>$message));
            echo json_encode(array("server_response"=>$response));
    mysqli_close($con);
?>

您没有实际执行查询。如果在声明
$sql
后添加行
$result=mysqli\u query($link,$sql);
,您将执行查询

然后,您可以使用相同的
if
评估它是否有效,但将该行更改为

if ($result) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($link);
}
if($result){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.
“.mysqli_Error($link); }
在上面的示例中,我还更改了您的错误报告,因为它引用了$conn,这是一个您以前没有声明过的变量。它现在使用与代码其余部分相同的
$link
变量

此外,我强烈建议您转义数据,因为您正在插入发布数据的内容。转义数据将有助于防止受到攻击。这不是完全安全的,但这是一个良好的开端

要添加转义,请将每个
$var=$\u POST['var']
行更改为
$var=mysqli\u real\u escape\u字符串($link,$\u POST['var']);

例如,
$hos=$\u POST['hos'];
变成
$hos=mysqli\u real\u escape\u字符串($link,$\u POST['hos']);

这有助于防止像XKCD的精彩示例这样的时刻

1)
单引号从列名中删除为
反勾号(`)

2)执行您的查询。您没有执行

3)如果
app\u id
列是
自动递增的
主键
。则无需传递值。保留为空

<?php
$sql = "INSERT INTO rantevou (`app_id`,`patient_id`,`date`,`time`,`hos`,`doc`) VALUES ('','$pat','$date','$time','$hos','$doc');";
$query = mysqli_query($link,$sql) ;

if ($query) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

您的代码中有许多错误

1.使用
mysql\u error()

您不能使用
mysql\u error
,因为您使用
mysqli
进行数据库连接。第二件事
mysql
不再受支持

解决方案使用
mysqli\u错误($link);

2.使用
$conn->error

您不能告诉我们
$conn->error
,因为您使用的是
mysqli
过程方式,不像面向对象的方式,而且您也没有定义
$conn
,而是使用了
$link

解决方案使用
mysqli\u错误($link);

正确的代码

if(!mysqli_query($link, $sql)){
     printf("Errormessage: %s\n", mysqli_error($link));
     die;
}else{
   echo "New record created successfully";
}
为什么不插入数据

因为您声明了变量
$sql
,但没有执行它

新记录已创建

由于if条件检查变量是否有值(而不是0)以及yes
$sql
是否有值,所以您总是会收到此消息

1.如果在insert语句sql注入中不需要任何sql注入,则必须使用prepare语句

2.“如果您的
app_id
int
请不要使用(“”或“”)引号而不是将“4”转换为int,则“单引号”或“仅应用于不在id上的字符串”

3.处理错误日志

4.请明确数据库扩展的使用概念

您不执行查询。您只设置了一个变量wrap off
quotes form table and column
name,而使用了
backtick
。并且忘记了执行insertquery@ask2now这些答案中有任何一个能解决您的问题吗?单击向上投票/向下投票按钮下方的勾号,可能会接受最佳答案,谢谢:)
<?php
$sql = "INSERT INTO rantevou (`app_id`,`patient_id`,`date`,`time`,`hos`,`doc`) VALUES ('','$pat','$date','$time','$hos','$doc');";
$query = mysqli_query($link,$sql) ;

if ($query) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
if(!mysqli_query($link, $sql)){
     printf("Errormessage: %s\n", mysqli_error($link));
     die;
}else{
   echo "New record created successfully";
}