2016-05-16 64 views
0

我得到的消息是新记录被创建,但是当我重新加载phpmyadmin时,表是相同的。我也从同一个数据库中检索了来自同一个表的 的信息,用SELECT命令,所以这个连接就可以工作..(明白地说)。我不知道为什么不更新。请帮忙。先谢谢你。不能用php将数据插入到mysql数据库中的现有表中

<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> 
+2

你不会执行你的查询。你只能设置一个变量 –

+1

用引用形式表和列名称来代替使用'backtick'。并忘记你执行插入查询 – Saty

回答

0

有很多错误在你的代码

使用 mysql_error()

1.因为你用mysqli的数据的基础上,你不能使用mysql_error connection.second事情mysql没有更多支持

解决方案使用mysqli_error($link);

2。使用$conn->error

你不能我们的$conn->error怎么一回事,因为你连mysqli程序的方式不是像面向对象的方法,你也不能定义一个$conn,而不是你使用$link

解决方案使用mysqli_error($link);

正确代码

if(!mysqli_query($link, $sql)){ 
    printf("Errormessage: %s\n", mysqli_error($link)); 
    die; 
}else{ 
    echo "New record created successfully"; 
} 

,因为你声明的变量$sql但你没有执行的

新纪录被创造

你得到这个消息的所有方面为什么数据未插入

,因为你如果条件检查变量有一个值(不是0),并且是$sql有值

1.您必须使用准备语句,如果您不想在插入语句中执行任何SQL注入SQL INJECTION

2'单引号或“”只有在一个字符串申请不上号,如果你的app_idint不使用(“”或“”)报价而不是将“4”为int

3.handle错误日志https://stackoverflow.com/a/3531852/3234646

4,请明确的概念使用数据库扩展的 http://php.net/manual/en/class.mysqli.php

-1

而不是

"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')"); 
0

你忘了执行查询,if ($sql) {只是评估变量。

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

此外,你需要使用SQL相关的变量,而不是单引号反引号:

$sql = "INSERT INTO rantevou (`app_id`,`patient_id`,`date`,`time`,`hos`,`doc`) VALUES ('4','$pat','$date','$time','$hos','$doc');"; 
+0

@ ask2now这些答案中的任何一个能解决你的问题吗?也许通过点击upvote/downvote按钮下面的勾号来接受最好的答案,谢谢:) – Panda

-1

首先,不使用的列名的单引号,要么使用没有或使用反引号。
其次,你忘了执行查询。
另外,使用OOP更好。

请尝试:

​​

$query = "INSERT INTO rantevou (app_id,patient_id,date,time,hos,doc) VALUES ('4','$pat','$date','$time','$hos','$doc');"; 
if ($mysqli->query($query)) echo "New record created"; 
else echo "Error: ".$mysqli->error; 
-1

编辑:什么luweiqi说:语句还没有被执行!

好像你知道你在做什么。您确定这里的参数:

$sql = "INSERT INTO rantevou (**'app_id','patient_id','date','time','hos','doc'**) VALUES ('4','$pat','$date','$time','$hos','$doc');"; 
if ($sql) { 

与您的数据库中的列标题完全匹配吗?

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

您的查询可返回的消息,但消息说,它已经失败......这将依旧会触发你的echo "New record created successfully";

这是我是如何构建我最近一次插入到数据库:

<?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); 
?> 
0

您并未实际执行您的查询。如果在声明$sql之后添加行$result = mysqli_query($link, $sql);,则将执行查询。

然后,您可以评估它是否曾使用相同if,但把上面一行是

if ($result) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($link); 
} 

在上面的例子中,我也改变了你的错误报告,因为它是引用$康恩,变量你以前没有宣布过。它现在使用与您的代码的其余部分相同的$link变量。

此外,我强烈建议转义您的数据,因为您插入发布数据的内容。转义您的数据将有助于防止SQL Injection。这并不全面安全,但这是一个好的开始。

为了逃脱添加,更改每个$var = $_POST['var']行改为$var = mysqli_real_escape_string($link, $_POST['var']);

例如,$hos=$_POST['hos'];成为$hos = mysqli_real_escape_string($link, $_POST['hos']);

这有助于防止这样的很好的例子,瞬间由XKCD enter image description here

0

1)删除(')从列名到backtick(`)

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

3)如果app_id柱是auto incrementedprimary key。那么,不需要传递价值。保留空白。

<?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; 
} 
相关问题