MySQL插入双引号PHP

MySQL插入双引号PHP,php,mysql,mysqli,prepared-statement,bindparam,Php,Mysql,Mysqli,Prepared Statement,Bindparam,我使用下面准备好的语句插入MySQL。如果我尝试插入带有$descrip的包含双引号的内容,则插入将在此时停止 例如: 试插16根实心钢管 表行中的条目仅显示16,并在双引号处停止,不会显示$descrip的其余部分 我做错了什么 $stmt = $db->prepare("INSERT INTO line_items (quote_id, part, descrip, qty, price, net, notes, datasheet) VALUES (?, ?, ?, ?, ?, ?,

我使用下面准备好的语句插入MySQL。如果我尝试插入带有$descrip的包含双引号的内容,则插入将在此时停止

例如: 试插16根实心钢管 表行中的条目仅显示16,并在双引号处停止,不会显示$descrip的其余部分

我做错了什么

$stmt = $db->prepare("INSERT INTO line_items (quote_id, part, descrip, qty, price, net, notes, datasheet) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("ssssssss", $quote_id, $part, $descrip, $qty, $price, $net, $notes, $datasheet);

foreach($_POST['part'] as $i => $item) {

    $part       = $item;
    $descrip   = $_POST['descrip'][$i];  //This wont enter something with double qutoes such as 16" Solid Steel Tube
    $qty        = $_POST['qty'][$i];
    $price      = $_POST['price'][$i];
    $net        = $_POST['net'][$i];
    $notes      = $_POST['notes'][$i];
    $datasheet  = $_POST['datasheet'][$i];

    $stmt->execute();
}   
编辑: 仅供参考-我正在从数据库中的另一个表中选择$DESRIP,该表正确地将其作为16实心钢管列在行中。当我试图通过我准备好的语句将此项复制到另一个表中时,它无法正确插入。

根据您的提示

我正在从数据库中的另一个表中选择$descrip,该表的行中正确地将其作为“16实心钢管”。当我试图通过我准备好的语句将此项复制到另一个表中时,它无法正确插入

我想你用这样的形式使用这个值,但可能不完全是这样

<input type="text" value="<?= $descrip ?>" name="descrip[]">
这将像

<input type="text" value="16&quot; Solid Steel Tube" name="descrip[]">

您的PHP脚本在提交时仍将以未编码字符串的形式接收。

@Satya不,这不应该是必需的。您如何验证该问题?在哪里可以看到不正确/截断的值?您是否绝对确定$\u POST['descrip'][$i]包含预期的value@marekful不,你绝对不会!此外,OP正在使用MySQLi。带有绑定参数的准备语句应该能够接受任何输入值,而无需特殊引号或转义。请大家停止建议转义/特殊引号。对于观察到的行为,最有可能的解释是$descrip只包含字符串“16”。我们需要使用PDO::quote、在双引号前添加反斜杠或使用mysqli_real_escape_字符串的建议是错误的。这些都不需要。设置一个测试来显示这一点很简单。只需将$descrip设置为文本值。e、 g.$descrip='16测试';这将证明它不是导致字符串在双引号处被截断的bind_参数。问题在于分配给$descrip.+10的值。毫无疑问,$descrip的值解释了观察到的行为。OP错误地推断是MySQL/prepared statement/bind_param导致字符串被截断。@spencer7593是的,这就是为什么我要求OP验证$_POST['descripp'][$I]的值,但在他们添加额外信息后,我认为问题似乎很明显。
<input type="text" value="<?= htmlspecialchars($descrip) ?>" name="descrip[]">
<input type="text" value="16&quot; Solid Steel Tube" name="descrip[]">