我收到此查询的错误(mysql_fetch_row():提供的参数不是有效的MySQL结果资源)。为什么呢?
<?php
set_time_limit(0);
//MySQL globals
$mysql_server = "***";//change this server for your Drupal installations
$mysql_user = "***";//Ideally, should be root
$mysql_pass = "***";//Corresponding password
$conn = mysql_connect($mysql_server,$mysql_user,$mysql_pass);//MySQL connection string
$query = "select * from dr_wiwe_old_node WHERE type = 'story'";
$noders = mysql_query($query);
var_dump($noders);
while ($row = mysql_fetch_row($noders)) {
$nid = $row[0];
$vid = $row[1];
$type = $row[2];
$title = mysql_real_escape_string($row[3]);
$uid = $row[4];
$status = $row [5];
$created = $row[6];
$changed = $row[7];
$comment = $row[8];
$promote = $row[9];
$moderate = $row[10];
$sticky = $row[11];
//Insertion into node
$query="insert into dr_wiwe_node values('" . $nid . "','"
. $vid . "','" . $type . "','','" . $title . "','" . $uid . "','"
. $status . "','" . $created . "','" . $changed . "','" . $comment
. "','" . $promote . "','" . $moderate . "','" . $sticky . "','0','0')";
if (!mysql_query($query)) {
print $query;
}
?>
错误在哪里或我可以改变什么?
答案 0 :(得分:2)
执行查询时,请检查函数的返回值。如果是false
,那么您的查询就会出错。
$noders = mysql_query($query);
if ($noders === false) {
error_log(mysql_error());
}
错误可能由于各种原因而发生,包括:
mysql_select_db()
选择正确的数据库,因此MySQL不知道如何查找您在查询中命名的表。您的代码示例就是这种情况。答案 1 :(得分:1)
type
是SQL中的保留字。您需要将它包含在查询中的反引号中,以将其用作字段名:
$query = "select * from dr_wiwe_old_node WHERE `type` = 'story'";
答案 2 :(得分:1)
的原因之一
mysql_fetch_row(): supplied argument is not a valid MySQL result resource
归因于:
在定义数据库时选择了错误的主机名,或者访问数据库的权限设置不正确。
例如,如果您已授予'admin@localhost'
访问数据库
并且您明确输入主机名导致问题。
要解决username@'%'
之类的授予权限。
答案 3 :(得分:0)
问题是您在查询循环中重新创建查询。如果不克隆连接或其他什么,我认为你不能这样做。