检查行是否存在,如果不存在则创建一行。

3
动机: 如果不存在与指定数据相同的行,则我只想创建一个带有指定数据的行。到目前为止,我尝试过的方法是 -

代码:

<?php
if(empty($_GET['a'])) {$xyz ="new";} else{$xyz=$_GET['a'];}
$servername = "mysql.soemwhere.com";
$username = "u130204422_acb";
$password = "YES-I-KNOW";
$dbname = "u130204422_acb";


$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$output ="SELECT * FROM trailers
WHERE url='$xyz' LIMIT 1";
$result = mysqli_query($conn,$output);
while($row = mysqli_fetch_array($result)) {
 $pid=$row["title"];
echo $pid;}
if (mysqli_num_rows($result) > 0) {echo 'yes';}
else{
$msql = "INSERT INTO `trailers`(`url`,`title`) VALUES ('$xyz','dekhlia')";
if ($conn->query($msql) === TRUE) {
    echo "New record created successfully. Refrsh the page and it will echo dekhlia";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;}
echo "hehe";
$conn->close();} 
?>

我无法弄清楚为什么这段代码不起作用。


1
这句话的意思是“为什么这段代码不起作用”?有没有错误信息?输出结果是否出乎意料? - Jens
检查是否有查询错误!如果 mysqli_query() 返回 false,则打印错误:printf("Error: %s\n", mysqli_error($conn)); - Glavić
不,它只是回显出新记录已成功创建,即使记录已经存在。 - IdidntKnewIt
感谢您的帮助,现在一切正常了。8分钟过后我会接受答案。 - IdidntKnewIt
1个回答

2

您在SQL字符串中不必要地添加了连接操作符。

因为它是字符串的一部分,所以请将其去除。

更改为

$output ="SELECT * FROM trailers
WHERE url='.$xyz.' LIMIT 1";

致:

$output ="SELECT * FROM trailers
WHERE url='$xyz' LIMIT 1";

猜猜看,我刚刚在代码中进行了编辑,但它仍然返回空响应。 - IdidntKnewIt
谢谢,那只是一个小错误,现在代码完美运行。 - IdidntKnewIt
如果我的答案对您有用,请将其标记为解决方案。 - Pupil
请等待8分钟。 - IdidntKnewIt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接