mysqli PHP扩展(“MySQL改进”)是PHP数据库驱动程序,包含自PHP 5以来。它利用了MySQL 4.1.3和更新版本中引入的新功能。
实现 MySQL PHP CRUD 操作的最简单方法以及用于简化编码的可用脚本? [已关闭]
我目前正在开发一个项目,涉及使用 MySQL 和 PHP 实现 CRUD(创建、读取、更新、删除)操作。我想让这个过程尽可能高效和简单......
我是 php 新手(已经接触了几天),但多年来一直在使用 c++ 和 python 等语言。我目前正在制作一个基本的全局聊天系统,其中输入的聊天内容被发送到 mysql
如何将序列插入到列名称 s_n(图 1)中,如图 2 所示的日期,在此处输入图像描述 在此输入图像描述 我正在尝试寻找代码或添加序列号的方法来搜索...
我已经做了以下准备好的查询。如果我只是在 ? 的位置手动插入数字,它就可以完美地工作。是。 但是,如果我绑定参数,查询似乎不会运行。我怎样才能...
我刚刚将所有 sql 查询更改为使用 mysqli 准备好的语句。为了加快这个过程,我创建了一个函数(称为performQuery)来代替mysql_query。它需要查询、垃圾箱...
有没有一种方法可以在 mysqli_stmt 对象中一次绑定一个参数?即类似的东西, // $stmt 是一个 mysqli_stmt 对象。 // $bindvals 是一个数组。 foreach($bindvals 作为$item){ $stmt->
如果使用准备好的 PHP/MySQL 查询,我需要清理输入吗?
鉴于以下代码,我需要逃逸并清理 $city 吗? 鉴于以下代码,我需要转义并清理$city吗? <?php $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $city = "Amersfoort"; /* create a prepared statement */ if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) { /* bind parameters for markers */ $stmt->bind_param("s", $city); /* execute query */ $stmt->execute(); /* bind result variables */ $stmt->bind_result($district); /* fetch value */ $stmt->fetch(); printf("%s is in district %s\n", $city, $district); /* close statement */ $stmt->close(); } /* close connection */ $mysqli->close(); ?> 使用准备好的查询时是否需要清理任何输入? 不,您不必为了注射保护而逃脱它或对其进行消毒。对于其他应用程序特定的内容,您可以对其进行清理。 不久前我也有过类似的问题: mysqli_stmt_bind_param SQL注入 您直接从 php.net 上有关 mysqli::prepare 的手册复制了该代码片段。在同一页上有以下文字: 准备好的语句的目的是不在 SQL 语句中包含数据。将它们包含在 SQL 语句中是不安全的。始终使用准备好的语句。它们使用起来更干净(代码更容易阅读)并且不易受到 SQL 注入。 这就是你问题的答案;) 此外。另外。 准备好的语句如果使用得当,几乎可以完全缓解 SQL 注入问题。但是您应该在适当的情况下格式化/清理输入数据。清洁输入不是一项安全功能,但为了稳健性和可用性,建议这样做。对于您的 $city,您可能需要删除所有非单词字符: $city = trim(preg_replace("/[^\w-]+/", " ", $city)); 再次强调:不会取代数据库转义或准备好的语句,但确保使用一致的数据。 我意识到这个问题很老了。我自己在搜索相同信息时偶然发现了它。我会对桑德的回答发表评论,但我还没有足够的声誉来发表评论。 Sander 说你不需要消毒,但是在 http://www.w3schools.com/php/php_mysql_prepared_statements.asp (我意识到 w3schools 并不总是一个完全最新且准确的信息来源,但我发现它以一种明智、易于理解的方式阐明了事情),他们说“注意:如果我们想插入来自外部来源的任何数据(例如用户输入),那么对数据进行清理和验证非常重要。 ” 所以看来当使用表单并接受用户输入时,你应该进行清理。
获取 mysql 响应结果的计数,如“SHOW OPEN TABLES”
我希望在刷新系统上的临时表之前检查数据库上是否有任何锁定的查询正在运行,同样我也收到了查询 显示打开的表,其中 In_use > 0;...
如果有人上传新文件,我会尝试更新数据库中的多条记录。由于某种原因,该页面将无法工作。我只是看到白屏并且没有进行任何更新。有什么建议吗...
我正在运行一个简单的查询来从 MySQL 数据库检索数据 SELECT * FROM conn_request WHERE 发送者='GZN-982546' 或接收者='GZN-982546' 不幸的是,这个查询返回空,即使......
这是下面列出的代码 公共函数更新(请求$ request,字符串$ id) { // 信息验证 $请求->验证([ '名称' => '必需|最大:255', '呃...
我有一个基于站点管理员打开的票证的日历。我们有四种类型的门票: 待办的 进行中 完成的 取消 这是我有日历的 div: 我有一个基于站点管理员打开的票证的日历。我们有四种类型的门票: 待定 进行中 完成了 取消 这是我有日历的div: <div class="col-lg-6 col-md-10 col-sm-11"> <div class="card"> <div class="card-header" data-background-color="blue"> <h4 class="title">Calendario</h4> </div> <br> <section class="content"> <?php $events = TicketData::getEvents(); foreach($events as $event){ $thejson[] = array("title"=>$event->title,"url"=>"./?view=editticket&id=".$event->id,"start"=>$event->date_at."T".$event->time_at); } // print_r(json_encode($thejson)); ?> <script> $(document).ready(function() { $('#calendar').fullCalendar({ header: { left: 'prev,next, today', center: 'title', right: 'month,agendaWeek,agendaDay' }, defaultDate: jQuery.now(), editable: false, eventLimit: true, // allow "more" link when too many events events: <?php echo json_encode($thejson); ?> }); }); </script> <div class="row"> <div class="col-md-12"> <div id="calendar"> </div> </div> </div> </section> </div> </div> 门票的数据库结构很简单:id、title、description、date_at、time_at、created_at、tecnico_id和status_id。 我想使用 if 脚本“着色”事件: 这是我的代码,但它不起作用。 <section class="content"> <?php $events = TicketData::getEvents(); // $status->status_id; foreach($events as $event){ $thejson[] = array("title"=>$event->title,"url"=>"./?view=editticket&id=".$event->id,"start"=>$event->date_at."T".$event->time_at,); $thejsonColor[] = array($event->status_id); } // print_r(json_encode($thejson)); ?> <script> $(document).ready(function() { $('#calendar').fullCalendar({ header: { left: 'prev,next, today', center: 'title', right: 'month,agendaWeek,agendaDay' }, defaultDate: jQuery.now(), editable: false, eventLimit: true, // allow "more" link when too many events events: <?php echo json_encode($thejson); ?>, if ($thejsonColor=1){ eventColor: 'fb8c00' }else if ($thejsonColor=2){ eventColor: 'ff0' } else if ($thejsonColor=3){ eventColor: '43a047' } else { eventColor: '00acc1' } }); }); </script> 我想让它们符合颜色标准,这样用户就可以知道哪些票是待处理的、不完整的、完整的和已取消的。 我是 javascript 的新手,我不知道如何做到这一点。你们能帮助我或指出我应该如何做吗? 您可以在迭代事件数组时设置颜色: <?php // helper function to pick the right color function getColor($id) { $eventColor = ''; if ($id == 1) { $eventColor = '#fb8c00'; } else if ($id == 2) { $eventColor = '#ff0'; } else if ($id == 3) { $eventColor = '#43a047'; } else { $eventColor = '#00acc1'; } return $eventColor; } $events = TicketData::getEvents(); //pulls the events from TicketData.php foreach($events as $event) { $thejson[] = array( "title" => $event->title, "url" => "./?view=editticket&id=".$event->id, "start" => $event->date_at."T".$event->time_at, "color" => getColor($event->status_id)); } ?> 然后就像你现在正在做的那样回显事件: <script> $(document).ready(function() { $('#calendar').fullCalendar({ header: { left: 'prev,next, today', center: 'title', right: 'month,agendaWeek,agendaDay' }, defaultDate: jQuery.now(), editable: false, eventLimit: true, // allow "more" link when too many events events: <?php echo json_encode($thejson); ?>, }); }); </script> 或者您可以通过从 php 中的表中选择来完成此操作,例如: $sql = "SELECT CASE WHEN tickets='Pending'" THEN '#C6E0B4' WHEN tickets='In progres' THEN '#FFFF99' END AS color" $schedules = $conn->query($sql); $sched_res = []; foreach($schedules->fetch_all(MYSQLI_ASSOC) as $row){ $sched_res[$row['id']] = $row; } 然后就像你现在正在做的那样回显事件: <script> $(document).ready(function() { $('#calendar').fullCalendar({ header: { left: 'prev,next, today', center: 'title', right: 'month,agendaWeek,agendaDay' }, defaultDate: jQuery.now(), editable: false, eventLimit: true, // allow "more" link when too many events events: <?php echo json_encode($thejson); ?>, }); }); </script>
我无法理解为什么这个简单的代码片段会这样。 这只是一个连接到 MariaDB 的基本 config.php 脚本。 当我输入正确的密码时,我会得到预期的行为,并且我可以看到“
将 MySQL 查询结果中的数据按一列进行分组,并从某些列创建子数组,并从另一列获取平均值
我需要获得 $product['stars'] 的总和,以便我可以用它来找到平均值。当我尝试使用它时,我没有在阵列上使用它?我也相信这是一个字符串。是否需要...
我正在尝试使用 SQL 查询构建一个自定义字段,该字段将每个帐户标识为 Search 或 PMax 或两者(Search & PMax)。 请帮忙 谢谢。 桑托什。 这是原始数据和预期的...
我在 try 块中有一个 mysqli_query ,如下所示: 尝试 { mysqli_query($db,$sql); } 捕获(异常$e){ 抛出$e; } 我正在尝试抓住一个 PHP 致命错误:
尝试使用 CodeIgniter 查询构建方法增加列值时“遇到 mysqli 的非数字值”[重复]
遇到非数字值 第 51 行表示这一行 它显示了一个错误的非数字值 ->update('购买',array('item_qty'=>'item_qty'+$item_qty)); 函数 upd_s...
遇到非数字值 第 51 行表示这一行 它显示了一个错误的非数字值 ->update('购买',array('item_qty'=>'item_qty'+$item_qty)); 函数 upd_s...
我正在 Windows Vista 上运行 Moodle 测试环境,具有 PHP 5.2.10 和 MySQL 5.1.36-Community。当我从 Moodle 1.9.9 升级到 2.0 时,出现以下错误。 错误:数据库驱动程序
如果 $name 和 $email 与现有记录不匹配,我正在尝试为新用户创建帐户,但以下代码片段正在插入与另一个客户相同的记录,而我试图阻止这种情况......