我收到新记录已创建的消息,但是当我重新加载phpmyadmin时,表格是相同的。我也从同一个DB中检索了信息, 从同一个表,用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>
答案 0 :(得分: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');";
答案 1 :(得分:0)
您实际上并未执行查询。如果在声明$result = mysqli_query($link, $sql);
后添加行$sql
,则会执行查询。
然后,您可以评估它是否使用相同的if
,但将该行更改为
if ($result) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($link);
}
在上面的示例中,我还更改了您的错误报告,因为它引用了$ conn,这是您之前未声明过的变量。它现在使用与其余代码相同的$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']);
答案 2 :(得分:0)
1)将single quotes
(&#39;)从列名移至backtick
(`)
2)执行您的查询。你没有被处决。
3)如果app_id
列为auto incremented
且primary 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;
}
答案 3 :(得分:0)
你的代码中有很多错误
<强> 1。使用mysql_error()
您无法使用mysql_error
,因为您使用mysqli
进行数据库连接。第二件事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
为什么不插入数据
因为您声明了变量$sql
,但您没有执行
创建了新记录
您可以通过各种方式获取此消息,因为if条件检查变量是否具有值(不是0)而是app_id
具有值
1.如果您不想在insert语句中注入任何SQL,请务必使用prepare语句SQL INJECTION
2&#39;&#39;单引号或&#34;&#34;如果int
1 row
metrics
未使用(&#39;&#39;或#34;&#34;)引用,则仅应用于不在ID上的字符串转换&#39; 4&#39;到int
3.handle错误日志https://stackoverflow.com/a/3531852/3234646
4.请清除数据库扩展的概念使用 http://php.net/manual/en/class.mysqli.php
答案 4 :(得分:-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')");
答案 5 :(得分:-1)
首先,不要对列名使用单引号,要么不使用,要么使用反引号 其次,你忘了执行查询 此外,使用OOP更好。
请尝试:
$mysqli = new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
和
$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;
答案 6 :(得分:-1)
好像你知道自己在做什么。你确定这里的参数:
$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";
这就是我将最近一次插入到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);
?>