【问题标题】:PHP + MySQL can not add row to db and no error [duplicate]PHP + MySQL无法将行添加到数据库并且没有错误[重复]
【发布时间】:2019-04-03 23:01:00
【问题描述】:

我正在尝试将新行添加到数据库中,但是它没有添加并且我没有收到错误。代码在本地工作,但不能在网络上工作。

这里是代码;

$RoomNo = mysqli_real_escape_string($conn,$_POST["roomno"]);
$Lastname = mysqli_real_escape_string($conn,$_POST["lastname"]);
$Name = mysqli_real_escape_string($conn,$_POST["name"]);
$Arrival = mysqli_real_escape_string($conn,$_POST["arrival"]);
$Departure = mysqli_real_escape_string($conn,$_POST["departure"]);
$EventType = mysqli_real_escape_string($conn,$_POST["eventtype"]);
$AssignedUser = mysqli_real_escape_string($conn,$_POST["assigned_user"]);
$Comment = mysqli_real_escape_string($conn,$_POST["comment"]);
$Action = mysqli_real_escape_string($conn,$_POST["action"]);

$ChooseAssignedUser = explode("|", $AssignedUser);

$eventregister_sql = "INSERT INTO tbl_event (room,lastname,name,arrival,departure,event_type,assigned_user,department,comment,action,user,update_user,call_time,update_time,status,hotel_id) VALUES ('".$RoomNo."','".$Lastname."','".$Name."','".$Arrival."','".$Departure."','".$EventType."','".$ChooseAssignedUser[0]."','".$ChooseAssignedUser[1]."','".$Comment."','".$Action."',".$_SESSION['user_id'].",".$_SESSION['user_id'].",'$gmtdbro','$gmtdbro','N',".$_SESSION['hotel_id'].")";
$eventregister_result = $conn->query($eventregister_sql);
echo "<center>Event registered successfuly. <a href=\"index.php\">Go back to main page</a>.</center>

【问题讨论】:

标签: php mysql forms session mysqli


【解决方案1】:

首先我建议你使用PDO在数据库中插入数据...优点是

  • 无需使用mysqli_real_escape_string
  • 可读代码

http://php.net/manual/en/pdostatement.bindvalue.php

$db = new PDO('mysql:host=localhost;dbname=DATABASENAME;charset=utf8',$dbname,$dbpass);
try{
$request=$db->prepare('INSERT INTO tbl_event (room,lastname,name,arrival,departure,event_type,assigned_user,department,comment,action,user,update_user,call_time,update_time,status,hotel_id) VALUES (:room,:lastname,:name......:hotel_id)');

$request->bindValue(':room',$_POST["roomno"],PDO::PARAM_STR); 
$request->bindValue(':lastname',$_POST["lastname"],PDO::PARAM_STR); 
.... 
$request->bindValue(':hotel_id',$_SESSION['hotel_id'],PDO::PARAM_INT); 

$result = $request->execute();
} catch(PDOException $e){
    var_dump($e);
}

然后在你的情况下尝试打印 sql 字符串并在 phpmyadmin 中使用这个字符串来找出发生了什么

echo $eventregister_sql;

尝试通过var_dump返回值看看是怎么回事

var_dump($eventregister_result);

echo mysqli_error($db);

【讨论】:

  • 虽然我也是 PDO 的粉丝,但 mysqli 还提供了面向对象的语法 预准备语句。
  • 最后值得一提。
  • $conn-&gt;query()的返回值要么是true要么是false,所以var_dump()不会有太大帮助。
  • 他已经知道它不成功,因为数据库没有更新。他需要知道为什么它失败了。
  • 但是既然他用的是mysqli,那应该是echo $conn-&gt;error;这在Funk Forty Niner链接到的重复问题中都有解释。
猜你喜欢
  • 2017-03-05
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 2017-06-13
相关资源
最近更新 更多