Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP错误:对非对象调用成员函数execute()_Php_Mysql_Function - Fatal编程技术网

PHP错误:对非对象调用成员函数execute()

PHP错误:对非对象调用成员函数execute(),php,mysql,function,Php,Mysql,Function,可能重复: 我对php和mysql很陌生,所以请耐心听我说。我编写了这段代码,但在尝试从数据库中删除记录时出现以下错误: <?php require_once 'login_rankings.php'; $mysqli = new mysqli($db_hostname,$db_username,$db_password,$db_database); if ($mysqli->connect_errno) { echo "Failed to connect to database:

可能重复:

我对php和mysql很陌生,所以请耐心听我说。我编写了这段代码,但在尝试从数据库中删除记录时出现以下错误:

<?php
require_once 'login_rankings.php';
$mysqli = new mysqli($db_hostname,$db_username,$db_password,$db_database);
if ($mysqli->connect_errno) {
echo "Failed to connect to database: " . $mysqli->connect_errno . ": " .
$mysqli->connect_error;
}

$query = "SELECT * FROM nfl";
$stmt = $mysqli->prepare($query);
$stmt->execute();
$stmt->store_result();
printf("Number of rows: %d.\n", $stmt->num_rows); echo "<br /><br /><br />";

if (isset($_POST['delete']) && isset($_POST['id']))
{
// $id = get_post('id');
$query = "DELETE FROM nfl WHERE id= :id LIMIT 1";



try{
$stmt = $mysqli->prepare($query);
$stmt->execute(array(':id' => $_POST['id']));
}catch(Exception $e){
error_log($e->getMessage() . '\r\n',3, errors.log);
}

/* not working either
  $stmt = $mysqli->prepare($query);
  $stmt->bind_param("id", $id);
  $stmt->execute(); */
}


$rows = $stmt->num_rows;
$res = $mysqli->query($query);

for ($j = 0; $j < $rows; ++$j)
{
$row = $res->fetch_assoc();
require_once 'abbrs.php';

echo <<<_END
<pre>
Last name: $row[lastname]
First name: $row[firstname]
Team: $row[team]
Position: $row[position]
Number: $row[number]
Age: $row[age]
Id: $row[id]</pre>
<form action="ranking_nfl.php" method="post">
<input type="hidden" name="delete" value="yes" />
<input type="hidden" name="id" value="$row[id]" />
<input type="submit" value="DELETE" />
</form>
_END;

}


$stmt->close();

$mysqli->close();
?>

致命错误:在第24行的C:\web\project2\ranking\u nfl.php中对非对象调用成员函数execute()


我猜我的代码缺少一个从表单中获取“id”结果的函数?我不知道我应该写什么。

你把PDO和mysqli语法弄混了

在PDO中,您可以使用像
:id
这样的变量,然后绑定它们。在mysqli中,您必须使用问号,并在
execute
语句之前绑定变量,而不是通过向其提供数组

在您的情况下(取自,我通常使用PDO):


好吧,现在这是有道理的。我从某人那里得到了使用PDO的一小段代码,但我没有意识到这是PDO而不是mysqli。非常感谢,它正在工作!
$query = "DELETE FROM nfl WHERE id= ? LIMIT 1";

try{
  $stmt = $mysqli->prepare($query);
  $stmt->bind_param('i', $_POST['id']);
  $stmt->execute();