Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress-更新数据库-$wpdb->准备_Php_Mysql_Wordpress - Fatal编程技术网

Php Wordpress-更新数据库-$wpdb->准备

Php Wordpress-更新数据库-$wpdb->准备,php,mysql,wordpress,Php,Mysql,Wordpress,我的自定义wordpress脚本中确实存在一个奇怪的问题。我想更新我的数据库,我使用了以下代码行: $update1 = $wpdb->query($wpdb->prepare("UPDATE wp_avg_rate SET avg='$raty' WHERE user_id= '$user->ID'")); 现在的问题是,我的页面加载了大约20秒,所以我开始去bug,我发现$wpdb->prepare需要第二个参数。我尝试了此代码,现在它正在工作: $update1 = $

我的自定义wordpress脚本中确实存在一个奇怪的问题。我想更新我的数据库,我使用了以下代码行:

$update1 = $wpdb->query($wpdb->prepare("UPDATE wp_avg_rate SET avg='$raty' WHERE user_id= '$user->ID'"));
现在的问题是,我的页面加载了大约20秒,所以我开始去bug,我发现$wpdb->prepare需要第二个参数。我尝试了此代码,现在它正在工作:

$update1 = $wpdb->query($wpdb->prepare("UPDATE wp_avg_rate SET avg='$raty' WHERE user_id= %d'", $user->ID));
现在的问题是,在我看来,在%d的末尾有一个“已关闭但从未打开”,所以我尝试了以下代码:

$update1 = $wpdb->query($wpdb->prepare("UPDATE wp_avg_rate SET avg='$raty' WHERE user_id= '%d'", $user->ID));

$update1 = $wpdb->query($wpdb->prepare("UPDATE wp_avg_rate SET avg='$raty' WHERE user_id= %d", $user->ID));

一旦我使用这些代码,站点负载再次超过20秒。有人能帮我告诉我数据库更新的正确语法是什么吗?

此SQL查询的正确语法是:

$update1 = $wpdb->query($wpdb->prepare("UPDATE wp_avg_rate SET avg='$raty' WHERE user_id= %d", $user->ID));
prepare将用$user->ID的净化整数替换%d

您看到的20秒延迟一定是您的数据库、数据库服务器或与它的连接有问题,根据提供的信息,我们无法对其进行故障排除

以下是你可以尝试的东西

首先,也是最重要的一点是确保正确生成SQL。签出调试栏和wp config的SAVE_查询选项 接下来,请检查是否可以使用MySQL客户端快速执行这些查询。如果可能的话,我建议使用mysql命令行工具,但是PHPMyAdmin或mysql工作台也会这样做 最后,如果在客户端执行查询时正确且快速,则可能需要检查DNS设置。由于数据库服务器无法解析WordPress服务器的主机名,我遇到了类似的问题
请告诉我进展如何

wp_avg_rate是一个非常大的表吗?它有多少行?用户id列是否已编制索引?不,这不是一个很大的表,我只是想知道“它不应该在那里,但它正在工作,所以我想知道正确的代码将是什么…设置平均值=%s,其中用户id=%d,$raty,$user->id;你是根据它的工作或不工作的速度完全?或者,您是否正在验证每个人是否都在执行其应该执行的更新?记录您的SQL字符串:$SQL=$wpdb->prepare。。。;someLogMethod$sql,如果您有一个本地实例,则回显它…然后对您的数据库运行实际的sql…然后您可以查看它是否是一个有效查询,而无效查询会出错,并且不会对数据库执行任何操作…这将是基于您上面所写内容的我的假设。