Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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 需要帮助让我的ForEach查询正常工作吗_Php_Mysql_Foreach - Fatal编程技术网

Php 需要帮助让我的ForEach查询正常工作吗

Php 需要帮助让我的ForEach查询正常工作吗,php,mysql,foreach,Php,Mysql,Foreach,我希望有人能帮我解决这个问题,因为我花了好几个星期的时间,现在我几乎要绞死自己了 首先,我有两张桌子: 表1,DynamicDocType DocTypePK,(AI主键) DocType(文档名-Varchar) 和表2, DocTypePk(AI-pk) CompanyFk(外键,见下一段) DocType,文档名称-Varchar) 我试图在添加新客户机时使用一个php事件,它查找主表(表1),并用一组完整的记录填充子表。目前,主表包含7项记录:手册、政策、程序、流程、工作说明、指南和表格

我希望有人能帮我解决这个问题,因为我花了好几个星期的时间,现在我几乎要绞死自己了

首先,我有两张桌子: 表1,DynamicDocType DocTypePK,(AI主键) DocType(文档名-Varchar)

和表2, DocTypePk(AI-pk) CompanyFk(外键,见下一段) DocType,文档名称-Varchar)

我试图在添加新客户机时使用一个php事件,它查找主表(表1),并用一组完整的记录填充子表。目前,主表包含7项记录:手册、政策、程序、流程、工作说明、指南和表格

我尝试使用的代码如下所示:

$rs10 = CustomQuery("SELECT DocType as DocType FROM DynamicDocType");
$data10 = db_fetch_array($rs10);
foreach($data10 as $row1)
    {
        CustomQuery("INSERT INTO CompanyDocType (CompanyFk, DocType) values  ('".$values["CompanyPk"]."', '$row1[DocType]')");
    }
然而,这不起作用,当我打印时,它所做的一切要么是每行的第一个字母,要么只是第一行的第一个字母,即“M”并停在那里

这让我很困惑,就像我以前在完全相同的平台、软件等上运行类似的代码一样:

$sql5 = "SELECT * FROM global_doctypes";
$rs5 = CustomQuery($sql5); 
$results5 = $rs5;
while ($row = $results5->fetch_assoc())
{
$sql6 = "INSERT INTO documents_doctypes (companyfk, doctype, doctypeID, doctypeabv) values
 ('".$values["companypk"]."', '$row[doctype]', '$row[doctypepk]', '$row[doctypeabv]')";CustomQuery($sql6);
}
这现在给了我一个致命的错误,说未定义的方法(用于fetch_assoc),但我已经检查过了,我知道服务器上安装了mysqlnd


foreach语句似乎是最好的,但我无法让它正确循环,请有人帮忙,你的代码可能有很多问题。这可能与“CustomQuery”函数返回的内容有关。我们无法进入您的计算机并识别该函数是什么或是做什么的,但它必须是坏的,因为您除了一个sql字符串之外没有任何参数,这意味着任何数据库连接都必须由全局函数驱动。啊

显然,您也在使用基于不推荐的mysql_uuAPI的东西

然而,您可能需要帮助的主要问题是,您似乎不了解插入php字符串的清晰方法。我希望这将帮助你清理一下你的代码

以下是您所拥有的:

$sql6 = "INSERT INTO documents_doctypes (companyfk, doctype, doctypeID, doctypeabv) values ('".$values["companypk"]."', '$row[doctype]', '$row[doctypepk]', '$row[doctypeabv]')";
CustomQuery($sql6);
在本例中,您使用的是定义字符串的php插值方法:

$sql = "....";
使用插值,嵌入字符串中的变量将在运行时解析

$foo = 'Loki';
$greeting = "Hello $foo!";
echo $greeting;
// You get Hello Loki!
使用单引号创建字符串常量

$foo = 'Loki';
$greeting = 'Hello $foo!';
echo $greeting;
// You get Hello $foo!
在您的例子中,显然您已经发现一个带有键的数组元素不会插入到字符串中,所以您开始插入,然后通过执行所有这些混乱的连接来混合所获取的数组元素。您似乎感到困惑,因为您有双引号和单引号,并且在某些情况下,您忽略了数组键的单引号。这对于SQL来说很复杂,因为value语句中使用单引号来表示您正在使用的字符串常量

秘密在于,只要在数组元素周围放置一个{}块,就可以在代码中简单而清晰地插入值

   $sql6 = "INSERT INTO documents_doctypes (companyfk, doctype, doctypeID, doctypeabv) values ('{$values['companypk']}', '{$row['doctype']}', '{$row['doctypepk']}', '{$row[doctypeabv]}')";
CustomQuery($sql6); 
我还必须质疑companyfk的数据类型。如果这是一个整数值,则不应在其周围加单引号,因为它不是字符串,而是数字类型

$sql6 = "INSERT INTO documents_doctypes (companyfk, doctype,   doctypeID, doctypeabv) values ({$values['companypk']}, {$row['doctype']}', '{$row['doctypepk']}', '{$row[doctypeabv]}')";
CustomQuery($sql6); 

为了防止有人再次遇到此问题,我使用以下代码设法使我的函数正常工作:

global $dal;
$tblDynamicDocType = $dal->Table("DynamicDocType");
$rs10 = $tblDynamicDocType->QueryAll();
while ($data10 = db_fetch_array($rs10))

{
    CustomQuery("INSERT INTO CompanyDocType (CompanyFk, DocType) values  ('".$values["CompanyPk"]."', '$data10[DocType]')");
}

你能分享打印部分吗?没什么可看的,它只是说“M”,这是第一行的第一个字母,即“Manual”,但这里prntscr.com/71wib5忘了说它正在使用打印($row1[“DocType”]在foreach循环中,所有的要点都很好,我会记下,坐下来温习一下你的要点,但是你能拿我的第一个循环代码,告诉我你会怎么做吗,只是一个简单的例子?顺便说一句,你在上面划分的第二个代码,不是我正在使用的,我把它放在那里,作为我之前所做的示例对此,但现在我正在寻找foreach声明