我的脚本不会将任何数据插入表中,不能显示错误

时间:2017-03-17 19:52:22

标签: php mysql mysqli

问题是:这个脚本在localhost上完美运行,但是当我上传它时,只是停止工作,并且没有错误显示:

<?
$sessid = $_SESSION['id_usuario'];
if (!$mysqli->query("INSERT INTO `cervezam_sgcm`.`orders` (`id`, `userid`, `cid`, `tipou`, `cantidad`, `factura`, `producto`, `lote`, `notas`, `cprod`, `pbase`, `cenvio`, `fecha`, `fechae`, `fechap`, `status`, `cobro`, `ip`) VALUES 
        (NULL, 
        '.mysql_real_escape_string($sessid).', 
        '.mysql_real_escape_string($cid).', 
        '.mysql_real_escape_string($tipou).', 
        '.mysql_real_escape_string($cantidad).', 
        '.mysql_real_escape_string($factura).', 
        '.mysql_real_escape_string($producto).', 
        '.mysql_real_escape_string($numlot).', 
        '.mysql_real_escape_string($notas).', 
        '.mysql_real_escape_string($cprod).', 
        '.mysql_real_escape_string($pbase).', 
        '.mysql_real_escape_string($cenvio).', 
        '.mysql_real_escape_string($fecha).', 
        '', 
        '', 
        '.mysql_real_escape_string($status).', 
        '.mysql_real_escape_string($cobro).', 
        '.mysql_real_escape_string($ip).');")) {
    echo "Falló la Insersión de Datos: (" . $mysqli->errno . ") " . $mysqli->error;
} echo"Datos Insertados";

尝试将值插入表格时,问题就开始了。

我只是尝试了所有:有或没有mysql:real_escape,在变量中使用{和},删除并添加带有变量Ej的“”。 '“。$ variable。”',所有!!仍然没有工作。

我刚试过这个php.net示例:

$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);

$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;

/* ejecuta sentencias prepradas */
$stmt->execute();

并没有发生任何事情,我的脚本不想将数据插入相应的表中。

我已启用错误报告

error_reporting(E_ALL);
ini_set('display_errors',0);
ini_set('log_errors',1);

但页面只是变为白色而没有任何警告或错误消息。

如果mysql用户名具有INSERT权限,我也很清楚,是的,我有权将数据插入表中。

请道歉我的英语,谢谢你的帮助。

解决了这个问题:

if (!$mysqli->query("INSERT INTO `cervezam_sgcm`.`orders` (`id`, `userid`, `cid`, `tipou`, `cantidad`, `factura`, `producto`, `lote`, `notas`, `cprod`, `pbase`, `cenvio`, `fecha`, `fechae`, `fechap`, `status`, `cobro`, `ip`) VALUES 
        (NULL, 
        '".$_SESSION['id_usuario']."', 
        '".$cid."', 
        '".$tipou."', 
        '".$cantidad."', 
        '".$factura."', 
        '".$producto."', 
        '".$numlot."', 
        '".$notas."', 
        '".$cprod."', 
        '".$pbase."', 
        '".$cenvio."', 
        '".$fecha."', 
        '', 
        '', 
        '".$status."', 
        '".$cobro."', 
        '".$ip."');")) {
    echo "Falló la Insersión de Datos: (" . $mysqli->errno . ") " . $mysqli->error;
} echo"Datos Insertados";

2 个答案:

答案 0 :(得分:1)

由于语法规则,您没有收到任何错误消息,请参阅<?= $test ?> is equivalent to <?php echo $test ?>. 表示只要使用<? php and ?>

执行即可用于打印数据
<?php 
$sessid = $_SESSION['id_usuario'];
if (!$mysqli->query("INSERT INTO `cervezam_sgcm`.`orders` (`id`, `userid`, `cid`, `tipou`, `cantidad`, `factura`, `producto`, `lote`, `notas`, `cprod`, `pbase`, `cenvio`, `fecha`, `fechae`, `fechap`, `status`, `cobro`, `ip`) VALUES 
        (NULL, 
        '.mysql_real_escape_string($sessid).', 
        '.mysql_real_escape_string($cid).', 
        '.mysql_real_escape_string($tipou).', 
        '.mysql_real_escape_string($cantidad).', 
        '.mysql_real_escape_string($factura).', 
        '.mysql_real_escape_string($producto).', 
        '.mysql_real_escape_string($numlot).', 
        '.mysql_real_escape_string($notas).', 
        '.mysql_real_escape_string($cprod).', 
        '.mysql_real_escape_string($pbase).', 
        '.mysql_real_escape_string($cenvio).', 
        '.mysql_real_escape_string($fecha).', 
        '', 
        '', 
        '.mysql_real_escape_string($status).', 
        '.mysql_real_escape_string($cobro).', 
        '.mysql_real_escape_string($ip).');")) {
    echo "Falló la Insersión de Datos: (" . $mysqli->errno . ") " . $mysqli->error;
} echo"Datos Insertados";
?>

答案 1 :(得分:0)

我对PHP很新,但我注意到你使用的是mysql和mysqli的混合体。你应该在整个代码中使用mysqli。

正确的语法是&#34; mysqli_real_escape_string($ databaseConnection,$ sessid);&#34;

希望有所帮助。