SQL查询语句中的PHP空白错误

莫莉·穆

我的第一篇文章,所以请放轻松:)我已经在网站上搜索了有关此问题的帮助,但找不到任何对于这种情况非常有用的信息。

我有一个使用MVC Framework和CodeIgniter的简单PHP / HTML Web应用程序,该应用程序允许用户从html选择多个框中选择公司,然后使用2个表(其中1个匹配)将信息(例如价目表信息)添加到sql数据库中外键。

如果公司名称只有一个单词,则一切正常,但是当公司名称的任何部分中都包含空格时,就会出现数据库错误1452。从数据库获取数据时,我已经使用str_replace()将''替换为'&nbsp',反之亦然。我已经在下面复制了错误消息和代码。抱歉,如果有点混乱。

感谢您的帮助,一直在寻找它太久了:(

错误信息

A Database Error Occurred

Error Number: 1452

Cannot add or update a child row: a foreign key constraint fails (`custDB`.`RateCard`, CONSTRAINT `RateCard_ibfk_1` FOREIGN KEY (`id_comp`) REFERENCES `Company` (`id_comp`))

CALL add_rate('test agreement', '123456', '');

Filename: /home/user/NetBeansProjects/CCP/models/custDB/custdbmodel.php

Line Number: 112

第112行是下面的add_rate()函数中的SQL查询字符串

HTML页面视图

<b>
<div>
    <label for="Aggrement Link">Agreement Link</label>
    <input type="input" name="createRateAggreement" /><br />
    <label for="Intial Fee">Initial Fee</label>
    <input type="number" name="createRateIntialFee" /><br />
    <?php
    echo "<select multiple=\"multiple\" name=\"createRateComp\">";
    foreach($companies->result() as $row)
    {
        $tempCompName=$row->name_comp;
        $tempCompName=str_replace(' ','&nbsp;',$tempCompName);
        echo "<option value=$tempCompName>$tempCompName</option>";
    }?></select><br><input type="submit" name="ubmit" value="Create New Rate Card" />
</div>
<?b>

模型功能

public function add_rate()
{               
    $rateAgreementIN=$this->input->post('createRateAggreement');
    $rateIntialFeeIN=$this->input->post('createRateIntialFee');
    $compNameIN=$this->input->post('createRateComp');              

    $compNameIN=  str_replace(" ", "&nbsp;", $compNameIN);
    $temp=$this->custDBModel->getCompanyIDBYname_comp($compNameIN)->row();
    $compIDIN=$temp->id_comp;

    $query = $this->db->query('CALL add_rate(\''.$rateAgreementIN.'\', \''.$rateIntialFeeIN.'\', \''.$compIDIN.'\');');
    $query->free_result();
}


public function getCompanyIDBYname_comp($compID)
{
 $query=$this->db->query('CALL getCompanyIDBYname_comp(\''.$compID.'\')');

 $output=$query;

while(mysqli_next_result($this->db->conn_id)) 
{
    if($query = mysqli_store_result($this->db->conn_id))
        {
                mysqli_free_result($query);
        }
}                                  
    return $output;     
}

数据库存储过程add_rate

CREATE DEFINER=`root`@`localhost` PROCEDURE `add_rate`(IN AGREEin varchar(255), IN INTIALFEEin double, IN IDCOMPin INT(11))

BEGIN

INSERT INTO RateCard (agreementLink_rate, date_rate, intialFee_rate, id_comp) VALUES (AGREEin, CURDATE(), INTIALFEEin, IDCOMPin);
END

@alex这是getCompanyIDBYname_comp存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `getCompanyIDBYname_comp`(IN NAMEin varchar(55))
BEGIN
SELECT id_comp
FROM custDB.Company
WHERE name_comp=NAMEin;
END
莫莉·穆

能够解决此问题...我在HTML选择多个框选项上使用了preg_replace(“ / [^ A-Za-z0-9] /”,'',$ string)方法,从中删除了所有非字母数字空格用户选择的选择,然后编辑SQL存储过程以从db表的name_comp列中删除所有空格以进行搜索。这是一个变通办法,但是应用程序能够处理公司名称,并在其中带有空格,因此每个人都很高兴。谢谢您的帮助 :)

这是我对模型函数add_rate()所做的更改

$compNameIN=  str_replace(" ", "&nbsp;", $compNameIN);

->

$compNameIN=  preg_replace('/[^A-Za-z0-9 ]/','', $compNameIN);

和getCompanyBYIDcomp_name存储过程

FROM custDB.Company
WHERE name_comp=NAMEin;
END

->

FROM custDB.Company comp
WHERE replace(comp.name_comp, ' ', '' )= NAMEin
END

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Azure:PHP SQL Webjob无法正常工作。为什么在查询“ execute()”语句中抛出该错误?

来自分类Dev

SQL UPDATE语句中涉及子查询的错误

来自分类Dev

AND语句中的SQL子查询

来自分类Dev

AND语句中的SQL子查询

来自分类Dev

PHP:sql语句中的连接

来自分类Dev

TableAdapter中查询的IIF语句中的错误

来自分类Dev

T SQL选择语句中的子查询

来自分类Dev

SQL语句中的Elasticsearch DSL查询

来自分类Dev

SQL查询的WHERE子句中的CASE语句

来自分类Dev

SQL Server:case语句中的昂贵查询

来自分类Dev

替换语句中的SQL内部查询

来自分类Dev

嵌套在if语句中的MySQL查询-PHP

来自分类Dev

嵌套在if语句中的MySQL查询-PHP

来自分类Dev

Oracle SQL:where子句中的Case语句返回错误“单行子查询返回多个行”

来自分类Dev

SQL语句中的语法错误问题

来自分类Dev

在此SQL语句中找不到错误

来自分类Dev

我的SQL语句中的“或”错误是什么?

来自分类Dev

在SQL语句中出现错误

来自分类Dev

sql 语句中的语法错误?

来自分类Dev

用户登录页面PHP的if语句中的错误

来自分类Dev

PHP elseif语句中的额外{错误

来自分类Dev

PHP 函数准备语句中的致命错误

来自分类Dev

SQL 查询 LIKE 语句错误

来自分类Dev

在php sql语句中动态更改Offset

来自分类Dev

在SQL语句中使用OR在PHP中给出“未定义的变量”错误

来自分类Dev

如何在php pdo语句中捕获确切的SQL错误

来自分类Dev

INSERT INTO 语句中的 PHP 语法错误。SQLExecDirect 中的 SQL 状态为 37000

来自分类Dev

Where子句中的PDO SQL查询错误

来自分类Dev

的PHP SQL查询语句的总数