2017-12-05 20 views
-3

mysqlにデータを挿入しようとしています。私は古いmysqlプロシージャに精通していますが、mysqliのプロシージャに精通していません。私は最近プロジェクトを行っておらず、PHPが7になったことを知りました。最後にPHP5でした。mysqliを使用してデータを挿入する際の問題

mysqliのを使用しているとき、私は次のエラーを取得する:

Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in C:\wamp64\www\index.php on line 60 

私のコードは次のとおりです。

$con = mysqli_connect($server, $username, $password, $database); 
$query3 = mysqli_query($con, "INSERT INTO `urls` (`url`, `nameurl`) VALUES ('$url', '$nameof')") or die (mysqli_error($query3)); 
mysqli_close($con); 

エラーがある行は、$ query3ラインです。 これはエラーが表示される部分です。完全なコードは次のとおりです。

<?php 

if (isset($_POST['submitted'])) { 

$url = trim($_POST['url']); 
$nameof = str_replace(" ",".",trim($_POST['nameof'])); 

$con = mysqli_connect($server, $username, $password, $database); 
$sql = "SELECT * FROM urls WHERE nameurl = '$nameof' LIMIT 1"; 

if ($result=mysqli_query($con,$sql)) 
{ 

$rowcount=mysqli_num_rows($result); 
if ($rowcount == 1) { 
echo '<br /><div class="alert alert-danger">Sorry! This name is already taken.</div>'; 
} else { 
if(!preg_match("/^[a-zA-Z]+[:\/\/]+[A-Za-z0-9\-_]+\\.+[A-Za-z0-9\.\/%&=\?\-_]+$/i", $url)) { 
echo "<br /><div class='alert alert-danger'>Error: invalid URL</div>"; 
} else { 

if(($_POST['Submit'] == 'Submit') && ((!empty($_POST['url'])) && (!empty($_POST['nameof'])))) 
{ 

$query3 = mysqli_query($con, "INSERT INTO `urls` (`url`, `nameurl`) VALUES ('$url', '$nameof')") or die (mysqli_error($query3)); 

echo '<br /><div class="alert alert-info">Your short URL is <a href="/'.$nameof.'">'.$nameof.'</a>!</div>'; 

} else { 
echo '<br /><div class="alert alert-danger">Error, fill in the fields.</div>'; 
} 

} 
} 
mysqli_free_result($result); 
} 
mysqli_close($con); 
} 

?> 

どうしたらよいですか?残りのコードは必要に応じて動作し、データのみが保存されません。 ご協力いただければ幸いです。

ありがとうございます。

+0

'$ con'は' false'を返します。これは 'server/user/pass/db_name'の何かが間違っていることを意味します。 – panther

+3

mysqli_error($ query3)をmysqli_error($ con)に置き換えてください –

+0

Andrey Yerokhinありがとうございます。それは私が挿入するときに列がないためだった。ヒットと呼ばれる別の列があり、デフォルトで0を追加する必要がありました。 – CristianB

答えて

0

あなたの問題は、あなたの場合には、それがされるようにするには、接続ではなく、クエリ自体に渡す必要がありmysqli_error() に間違ったオブジェクトを渡しているということです。

$query3 = mysqli_query($con, "INSERT INTO `urls` (`url`, `nameurl`) VALUES ('$url', '$nameof')") or die (mysqli_error($con)); 

参考:http://php.net/manual/en/mysqli.error.php

関連する問題