-1

リンク短縮機能で MySQL/MySQLi/PHP エラーが発生しました。エラーは次のとおりです。

Fatal error: Call to a member function bind_param() on a non-object in
/home/exabit/public_html/9ui/index.php on line 50

これが問題の行です。

$reslove->bind_param("ss",$link, $short_url);

ここに残りのコードがあります

<?php
$data_base = new mysqli ("http://host38.qnop.net/~exab","exab_ml","MKnOz3A]h~aw","exab_ml");
function generateRandomString($length = 3) {
$key = 'abcdefghijklmnopqrstuvwxyz1234567890';
$keyLength = strlen($key);
$string = '';
for ($i = 0; $i < $length; $i++) {
$string .= $key[rand(0, $keyLength - 1)];
}
return $string;
}
if (isset($_GET['title'])) {
$reslove = $data_base->prepare("SELECT * FROM links WHERE title=?");
$reslove->bind_param("s", $_GET['title']);
$reslove->execute();
$goto = $reslove->get_result()->fetch_array();
$goto1 = $goto[1];
header("Location: $goto1");
}
if (isset($_POST['submit'])) {
$short_url = generateRandomString();
if (!preg_match("/^(http|https):/", $_POST['long_url'])) {
$_POST['long_url'] = 'http://'.$_POST['long_url'];
}
$link = $_POST['long_url'];
$reslove = $data_base->prepare("INSERT INTO links VALUES('',?,?)");
$reslove->bind_param("ss",$link, $short_url);
$reslove->execute();
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<center>
<form>
<p style="color:#05ff19;font-family:Tahoma;font-size:16px;text-align:center">Shortened Link: </p><input id=shortenedurl style="background-color:#000;color:#05ff19;font-family:Tahoma;font-size:16px;vertical-align:middle;border:1px solid #05ff19" type="text" value=<?php echo "9ui.co/$short_url";}?>'>
</form>
</center>

解決のスペルミスはそれとは何の関係もありません。
前もって感謝します、
ザック・デイビス

4

2 に答える 2

2

エラー「非オブジェクトでのメンバー関数 bind_param() の呼び出し」$resloveは、それがオブジェクトではないことを意味するため、オブジェクトではないものでメンバー関数 (別名メソッド) を呼び出すことはできません。オブジェクトになれ$resolveないのはどうしてですか?さて、->prepare49 行目のメソッド呼び出しはfalse、SQL ステートメントの準備中にエラーが発生した場合に戻ります。もちろん、falseこれは「非オブジェクト」であるため、エラー メッセージが表示されます。

$resolvegets set の49 行目を見ると、うーん、SQL ステートメントがおかしく見えます。通常、INSERT コマンドの構文は ...

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

(column1,column2,column3,...)列名とその順序を明示的に示す を省略しました。列が値と一致すると仮定するため、これが機能する場合でも、これを除外することは危険であり、脆弱です。これは常にそうであるとは限りません。を明示的に述べた方がはるかに安全(column1,column2,column3,...)です。

于 2015-12-26T17:29:58.317 に答える