我通过PHP使用插入命令传递一个大的数据集到一个MySQL表,我想知道是否有可能通过一个查询,而不是追加一个英里长的string结束每个值,然后一次约1000行,然后执行它。 我正在使用codeigniter框架,所以它的function也可以给我。
我试图执行我的PHP代码,通过mysqli调用两个MySQL查询,并得到错误“命令不同步,你现在不能运行这个命令”。 这是我正在使用的代码 <?php $con = mysqli_connect("localhost", "user", "password", "db"); if (!$con) { echo "Can't connect to MySQL Server. Errorcode: %s\n". Mysqli_connect_error(); exit; } $con->query("SET NAMES 'utf8'"); $brand ="o"; $countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %"; if ($numRecords = $con->prepare($countQuery)) { $numRecords->bind_param("s", $brand); $numRecords->execute(); $data = $con->query($countQuery) or die(print_r($con->error)); $rowcount = […]
如何在MySQL存储过程中构build和使用dynamicSQL?
这是创build一个社区学习资源 。 目标是要有好的代码示例,不要重复在复制/粘贴的PHP代码中经常发现的可怕错误。 我已经要求它成为社区Wiki。 这不是一个编码比赛。 这不是寻找最快或最紧凑的方法来做一个查询 – 这是提供一个良好的,可读的参考,特别是对于新手。 每天,使用Stack Overflow上的mysql_*系列函数都会有大量的问题,其代码片段很糟糕 。 虽然通常最好把这些人引导到PDO,但是有时候这是不可能的(例如inheritance的遗留软件),也不是现实的期望(用户已经在他们的项目中使用它)。 使用mysql_*库的代码的常见问题包括: SQL注入值 LIMIT子句和dynamic表名中的SQL注入 没有错误报告(“为什么这个查询不起作用?”) 损坏的错误报告(即即使在代码投入生产时也会出现错误) 跨站脚本(XSS)注入值输出 让我们编写一个PHP代码示例,使用mySQL_ *系列函数执行以下操作: 接受两个POST值, id (数字)和name (一个string) 对表tablename执行UPDATE查询,使用ID id更改行中的name列 失败时,退出,但只在生产模式中显示详细的错误。 trigger_error()就足够了; 或者使用您select的方法 输出消息“ $name updated”。 并没有显示上面列出的任何弱点。 它应该尽可能简单 。 它理想上不包含任何函数或类。 目标不是创build复制/可粘贴的库,而是显示为了使数据库查询安全所需完成的工作。 奖金积分好评论。 目标是使这个问题成为用户在遇到问题提问者时可以链接的资源(即使问题根本不是问题的焦点),或者遇到失败的查询,也不会知道如何解决它。 为了抢先PDO讨论: 是的,通常把这些问题写给PDO的人最好。 当这是一个select,我们应该这样做。 然而,这并不总是可能的 – 有时候,提问者正在使用遗留代码,或者已经在这个库中使用了很长时间,现在不太可能改变它。 另外,如果正确使用, mysql_*系列函数是完全安全的。 所以请不要在这里使用PDO。
有什么办法可以从查询中得到实际的行号吗? 我希望能够通过一个名为score的字段来订购名为league_girl的表格; 并返回用户名和该用户名的实际行位置。 我想排名的用户,所以我可以告诉哪里是一个特定的用户,即。 Joe是200中的第100位,即 User Score Row Joe 100 1 Bob 50 2 Bill 10 3 我已经在这里看到了一些解决scheme,但是我已经尝试了大部分解决scheme,其中没有一个实际返回行号。 我试过这个: SELECT position, username, score FROM (SELECT @row := @row + 1 AS position, username, score FROM league_girl GROUP BY username ORDER BY score DESC) 作为派生 …但似乎没有返回行的位置。 有任何想法吗?
我想优化我的查询,所以我看着mysql-slow.log 。 我的大部分慢查询都包含ORDER BY RAND() 。 我无法find解决此问题的真正解决scheme。 Theres是MySQLPerformanceBlog中的一个可能的解决scheme,但我不认为这是足够的。 在优化不佳(或频繁更新,用户pipe理)的表,它不工作,或者我需要运行两个或更多的查询,然后才能select我的PHP生成的随机行。 有没有解决这个问题? 一个虚拟的例子: SELECT accomodation.ac_id, accomodation.ac_status, accomodation.ac_name, accomodation.ac_status, accomodation.ac_images FROM accomodation, accomodation_category WHERE accomodation.ac_status != 'draft' AND accomodation.ac_category = accomodation_category.acat_id AND accomodation_category.acat_slug != 'vendeglatohely' AND ac_images != 'b:0;' ORDER BY RAND() LIMIT 1
我有一个新的数据频繁插入的表。 我需要得到表格的最后一个ID。 我该怎么做? 它是类似于SELECT MAX(id) FROM table吗?
我怎样才能重置字段的auto_increment ? 我希望它从1开始重新计数。
在一台服务器上,当我运行: mysql> select now(); +———————+ | now() | +———————+ | 2009-05-30 16:54:29 | +———————+ 1 row in set (0.00 sec) 在其他服务器上: mysql> select now(); +———————+ | now() | +———————+ | 2009-05-30 20:01:43 | +———————+ 1 row in set (0.00 sec)
我试图连接到本地MySQL服务器,但我不断收到错误。 这是代码。 public class Connect { public static void main(String[] args) { Connection conn = null; try { String userName = "myUsername"; String password = "myPassword"; String url = "jdbc:mysql://localhost:3306/myDatabaseName"; Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = DriverManager.getConnection(url, userName, password); System.out.println("Database connection established"); } catch (Exception e) { System.err.println("Cannot connect to database server"); System.err.println(e.getMessage()); e.printStackTrace(); } finally { if […]