2017-03-17 21 views
1

、テーブルにデータを挿入いけない問題がある:このスクリプトは、ローカルホスト上で完璧に動作しますが、私はそれをアップロードする際に、単に動作を停止し、エラー表示しません:私のスクリプトはカントの表示エラー

<? 
$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を削除して追加するだけです。 '' $変数。 ''、すべて!!まだ動作していません。

私はちょうどこの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権限があり、はい、データをテーブルに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"; 
+0

これらの変数を消毒していますか?ユーザー入力の場合は、[SQL Injection](http://php.net/manual/en/security.database.sql-injection.php)の脆弱性があります。 – carla

答えて

0

私はかなりPHPに新しいですが、あなたはmysqlとmysqliの混合物を使用していることに気付きました。実際には、コード全体を通してmysqliを使用する必要があります。

正しい構文は「mysqli_real_escape_string($ databaseConnection、$ sessid);」です。

希望に役立ちます。

+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"; 
?> 
を使い実行したい場合は、あなたがデータを印刷するために使用できることを意味見ます
+0

ありがとう!私はこれを持っています:致命的なエラー:Uncaught例外 'mysqli_sql_exception'メッセージで 'Incorrect integer value:' .mysql_real_escape_string(1)。 ' /home/cervezam/sgcm/procesos/crea_orden.php:92の行1のカラム 'userid'のスタックトレース:#0 /home/cervezam/sgcm/procesos/crea_orden.php(92):mysqli-> query( 'INSERT INTO 'ce ...')#1 {main}は/home/cervezam/sgcm/procesos/crea_orden.php 92行目に投げた 私の研究を続けます。 –

+0

mysql_real_escape_string(1)私はあなたがuseridのためにデータベーステーブルの整数を使用したと思います。 –

+0

あなたはモル固有ですか?私は "整数"について理解していません –

関連する問題